Aliran Kerja Sumbangan
Panduan ini membimbing anda melalui proses lengkap menyumbang kepada XOOPS, daripada persediaan awal hingga permintaan tarik gabungan.---
PrasyaratSebelum anda mula menyumbang, pastikan anda mempunyai:- Git dipasang dan dikonfigurasikan
Section titled “PrasyaratSebelum anda mula menyumbang, pastikan anda mempunyai:- Git dipasang dan dikonfigurasikan”- Akaun GitHub (percuma)
- PHP 7.4+ untuk pembangunan XOOPS
- Komposer untuk pengurusan pergantungan
- Pengetahuan asas aliran kerja Git
- Kebiasaan dengan Tatakelakuan---
Langkah 1: Fork Repositori### Pada Antara Muka Web GitHub1. Navigasi ke repositori (cth., XOOPS/XoopsCore27)
Section titled “Langkah 1: Fork Repositori### Pada Antara Muka Web GitHub1. Navigasi ke repositori (cth., XOOPS/XoopsCore27)”- Klik butang Fork di penjuru kanan sebelah atas
- Pilih tempat untuk bercabang (akaun peribadi anda)
- Tunggu garpu siap### Mengapa Garpu?- Anda mendapat salinan anda sendiri untuk diusahakan
- Penyelenggara tidak perlu menguruskan banyak cawangan
- Anda mempunyai kawalan penuh ke atas garpu anda
- Permintaan Tarik merujuk garpu anda dan repo huluan---
Langkah 2: Klon Garpu Anda Secara Tempatan
Section titled “Langkah 2: Klon Garpu Anda Secara Tempatan”bash# Clone your fork (replace YOUR_USERNAME)git clone https://github.com/YOUR_USERNAME/XoopsCore27.gitcd XoopsCore27
# Add upstream remote to track original repositorygit remote add upstream https://github.com/XOOPS/XoopsCore27.git
# Verify remotes are set correctlygit remote -v# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (fetch)# origin https://github.com/YOUR_USERNAME/XoopsCore27.git (push)# upstream https://github.com/XOOPS/XoopsCore27.git (fetch)# upstream https://github.com/XOOPS/XoopsCore27.git (nofetch)Langkah 3: Sediakan Persekitaran Pembangunan### Pasang Ketergantungan
Section titled “Langkah 3: Sediakan Persekitaran Pembangunan### Pasang Ketergantungan”bash# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installKonfigurasikan Git
Section titled “Konfigurasikan Git”bash# Set your Git identitygit config user.name "Your Name"git config user.email "your.email@example.com"
# Optional: Set global Git configgit config --global user.name "Your Name"git config --global user.email "your.email@example.com"Jalankan Ujian
Section titled “Jalankan Ujian”bash# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitLangkah 4: Cipta Cawangan Ciri### Konvensyen Penamaan CawanganIkut corak ini: <type>/<description>Jenis:
Section titled “Langkah 4: Cipta Cawangan Ciri### Konvensyen Penamaan CawanganIkut corak ini: <type>/<description>Jenis:”feature/- Ciri baharufix/- Pembetulan pepijatdocs/- Dokumentasi sahajarefactor/- Pemfaktoran semula kodtest/- Tambahan ujianchore/- Penyelenggaraan, perkakasContoh:
bash# Feature branchgit checkout -b feature/add-two-factor-auth
# Bug fix branchgit checkout -b fix/prevent-xss-in-forms
# Documentation branchgit checkout -b docs/update-api-guide
# Always branch from upstream/main (or develop)git checkout -b feature/my-feature upstream/mainPastikan Cawangan Kemas Kini
Section titled “Pastikan Cawangan Kemas Kini”bash# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainLangkah 5: Buat Perubahan Anda### Amalan Pembangunan1. Tulis kod mengikut Piawaian PHP
Section titled “Langkah 5: Buat Perubahan Anda### Amalan Pembangunan1. Tulis kod mengikut Piawaian PHP”- Tulis ujian untuk fungsi baharu
- Kemas kini dokumentasi jika perlu
- Jalankan linter dan pemformat kod### Pemeriksaan Kualiti Kod
bash# Run all tests./vendor/bin/phpunit
# Run with coverage./vendor/bin/phpunit --coverage-html coverage/
# Run PHP CS Fixer./vendor/bin/php-cs-fixer fix --dry-run
# Run PHPStan static analysis./vendor/bin/phpstan analyse class/ src/Lakukan Perubahan Baik
Section titled “Lakukan Perubahan Baik”bash# Check what you changedgit statusgit diff
# Stage specific filesgit add class/MyClass.phpgit add tests/MyClassTest.php
# Or stage all changesgit add .
# Commit with descriptive messagegit commit -m "feat(auth): add two-factor authentication support"Langkah 6: Pastikan Cawangan dalam SegerakSemasa mengusahakan ciri anda, cawangan utama mungkin maju:
Section titled “Langkah 6: Pastikan Cawangan dalam SegerakSemasa mengusahakan ciri anda, cawangan utama mungkin maju:”bash# Fetch latest changes from upstreamgit fetch upstream
# Option A: Rebase (preferred for clean history)git rebase upstream/main
# Option B: Merge (simpler but adds merge commits)git merge upstream/main
# If conflicts occur, resolve them then:git add .git rebase --continue # or git merge --continueLangkah 7: Tolak ke Garpu Anda
Section titled “Langkah 7: Tolak ke Garpu Anda”bash# Push your branch to your forkgit push origin feature/my-feature
# On subsequent pushesgit push
# If you rebased, you might need force push (use carefully!)git push --force-with-lease origin feature/my-featureLangkah 8: Buat Permintaan Tarik### Pada Antara Muka Web GitHub1. Pergi ke garpu anda di GitHub
Section titled “Langkah 8: Buat Permintaan Tarik### Pada Antara Muka Web GitHub1. Pergi ke garpu anda di GitHub”- Anda akan melihat pemberitahuan untuk membuat PR daripada cawangan anda
- Klik “Banding & tarik permintaan”
- Atau klik secara manual “Permintaan tarik baharu” dan pilih cawangan anda### Tajuk dan Penerangan PRFormat Tajuk:
<type>(<scope>): <subject>Contoh:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceTemplat Penerangan:
markdown## DescriptionBrief explanation of what this PR does.
## Changes- Changed X from A to B- Added feature Y- Fixed bug Z
## Type of Change- [ ] New feature (adds new functionality)- [ ] Bug fix (fixes an issue)- [ ] Breaking change (API/behavior change)- [ ] Documentation update
## Testing- [ ] Added tests for new functionality- [ ] All existing tests pass- [ ] Manual testing performed
## Screenshots (if applicable)Include before/after screenshots for UI changes.
## Related IssuesCloses #123Related to #456
## Checklist- [ ] Code follows style guidelines- [ ] Self-reviewed own code- [ ] Commented complex code- [ ] Updated documentation- [ ] No new warnings generated- [ ] Tests pass locallySenarai Semak Semakan PRSebelum menghantar, pastikan:- [ ] Kod mengikut Piawaian PHP
Section titled “Senarai Semak Semakan PRSebelum menghantar, pastikan:- [ ] Kod mengikut Piawaian PHP”- Ujian disertakan dan lulus
- Dokumentasi dikemas kini (jika perlu)
- Tiada konflik gabungan
- Komit mesej adalah jelas
- Isu berkaitan dirujuk
- Penerangan PR adalah terperinci
- Tiada kod nyahpepijat atau log konsol---
Langkah 9: Balas Maklum Balas### Semasa Semakan Kod1. Baca komen dengan teliti - Fahami maklum balas
Section titled “Langkah 9: Balas Maklum Balas### Semasa Semakan Kod1. Baca komen dengan teliti - Fahami maklum balas”- Tanya soalan - Jika kurang jelas, minta penjelasan
- Bincangkan alternatif - Pendekatan perbahasan dengan hormat
- Buat perubahan yang diminta - Kemas kini cawangan anda
- Paksa-tolak dikemas kini komit - Jika menulis semula sejarah
bash# Make changesgit add .git commit --amend # Modify last commitgit push --force-with-lease origin feature/my-feature
# Or add new commitsgit commit -m "Address feedback on PR review"git push origin feature/my-featureJangkakan Lelaran- Kebanyakan PR memerlukan beberapa pusingan semakan
Section titled “Jangkakan Lelaran- Kebanyakan PR memerlukan beberapa pusingan semakan”- Bersabar dan membina
- Lihat maklum balas sebagai peluang pembelajaran
- Penyelenggara boleh mencadangkan refactor---
Langkah 10: Gabung dan Pembersihan### Selepas KelulusanSetelah penyelenggara meluluskan dan menggabungkan:1. Gabung automatik GitHub atau gabungan klik penyelenggara
Section titled “Langkah 10: Gabung dan Pembersihan### Selepas KelulusanSetelah penyelenggara meluluskan dan menggabungkan:1. Gabung automatik GitHub atau gabungan klik penyelenggara”- Cawangan anda dipadamkan (biasanya automatik)
- Perubahan ada di hulu### Pembersihan Tempatan
bash# Switch to main branchgit checkout main
# Update main with merged changesgit fetch upstreamgit merge upstream/main
# Delete local feature branchgit branch -d feature/my-feature
# Delete from your fork (if not auto-deleted)git push origin --delete feature/my-featureGambarajah Aliran Kerja
Section titled “Gambarajah Aliran Kerja”mermaidgraph LR A[Fork Repository] --> B[Clone Fork] B --> C[Create Branch] C --> D[Make Changes] D --> E[Commit & Push] E --> F[Create PR] F --> G{Review} G -->|Approved| H[Merge] G -->|Changes Needed| I[Update PR] I --> G H --> J[Cleanup] J --> K[Done]Senario Biasa### Menyegerakkan Sebelum Mula
Section titled “Senario Biasa### Menyegerakkan Sebelum Mula”bash# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainMenambah Lebih Banyak Komit
Section titled “Menambah Lebih Banyak Komit”bash# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingMembetulkan Kesilapan
Section titled “Membetulkan Kesilapan”bash# Last commit has wrong messagegit commit --amend -m "Correct message"git push --force-with-lease
# Revert to previous state (careful!)git reset --soft HEAD~1 # Keep changesgit reset --hard HEAD~1 # Discard changesMengendalikan Konflik Gabungan
Section titled “Mengendalikan Konflik Gabungan”bash# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseAmalan Terbaik### Lakukan- Pastikan cawangan fokus pada isu tunggal
Section titled “Amalan Terbaik### Lakukan- Pastikan cawangan fokus pada isu tunggal”- Buat komitmen yang kecil dan logik
- Tulis mesej komit deskriptif
- Kemas kini cawangan anda dengan kerap
- Uji sebelum menolak
- Perubahan dokumen
- Bersikap responsif terhadap maklum balas### Jangan- Bekerja terus di cawangan main/master
- Campurkan perubahan yang tidak berkaitan dalam satu PR
- Komit fail yang dijana atau node_modules
- Tolak paksa selepas PR adalah umum (gunakan —paksa-dengan-pajakan)
- Abaikan maklum balas semakan kod
- Buat PR yang besar (pecah menjadi yang lebih kecil)
- Komit data sensitif (kunci API, kata laluan)---
Petua untuk Berjaya### Berkomunikasi- Tanya soalan dalam isu sebelum memulakan kerja
Section titled “Petua untuk Berjaya### Berkomunikasi- Tanya soalan dalam isu sebelum memulakan kerja”- Minta panduan tentang perubahan yang kompleks
- Bincangkan pendekatan dalam huraian PR
- Balas maklum balas dengan segera### Ikut Piawaian- Semak Piawaian PHP
- Semak garis panduan Pelaporan Isu
- Baca Gambaran Keseluruhan Menyumbang
- Ikut Garis Panduan Permintaan Tarik### Ketahui Pangkalan Kod- Baca corak kod sedia ada
- Kaji pelaksanaan yang serupa
- Fahami seni bina
- Semak Konsep Teras---
Dokumentasi Berkaitan- Tatakelakuan
Section titled “Dokumentasi Berkaitan- Tatakelakuan”- Garis Panduan Permintaan Tarik
- Pelaporan Isu
- Piawaian Pengekodan PHP
- Gambaran Keseluruhan Menyumbang---
#XOOPS #git #github #contributing #workflow #pull-request