Alur Kerja Kontribusi
Panduan ini memandu Anda melalui proses lengkap berkontribusi ke XOOPS, mulai dari penyiapan awal hingga permintaan penarikan gabungan.
Prasyarat
Section titled “Prasyarat”Sebelum Anda mulai berkontribusi, pastikan Anda memiliki:
- Git diinstal dan dikonfigurasi
- akun GitHub (gratis)
- PHP 7.4+ untuk pengembangan XOOPS
- Komposer untuk manajemen ketergantungan
- Pengetahuan dasar tentang alur kerja Git
- Keakraban dengan Kode Etik
Langkah 1: Buat Cabang pada Repositori
Section titled “Langkah 1: Buat Cabang pada Repositori”Di Antarmuka Web GitHub
Section titled “Di Antarmuka Web GitHub”- Navigasikan ke repositori (mis.,
XOOPS/XoopsCore27) - Klik tombol Fork di pojok kanan atas
- Pilih tempat untuk bercabang (akun pribadi Anda)
- Tunggu hingga percabangan selesai
Mengapa Garpu?
Section titled “Mengapa Garpu?”- Anda mendapatkan salinan Anda sendiri untuk dikerjakan
- Pengelola tidak perlu mengelola banyak cabang
- Anda memiliki kendali penuh atas garpu Anda
- Permintaan Tarik merujuk pada fork Anda dan repo upstream
Langkah 2: Kloning Garpu Anda Secara Lokal
Section titled “Langkah 2: Kloning Garpu Anda Secara Lokal”# 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: Siapkan Lingkungan Pengembangan
Section titled “Langkah 3: Siapkan Lingkungan Pengembangan”Instal Dependensi
Section titled “Instal Dependensi”# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installKonfigurasikan Git
Section titled “Konfigurasikan Git”# 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 Tes
Section titled “Jalankan Tes”# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitLangkah 4: Buat Cabang Fitur
Section titled “Langkah 4: Buat Cabang Fitur”Konvensi Penamaan Cabang
Section titled “Konvensi Penamaan Cabang”Ikuti pola ini: <type>/<description>
Jenis:
feature/- Fitur barufix/- Perbaikan bugdocs/- Dokumentasi sajarefactor/- Pemfaktoran ulang kodetest/- Uji tambahanchore/- Pemeliharaan, perkakas
Contoh:
# 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/mainSelalu Perbarui Cabang
Section titled “Selalu Perbarui Cabang”# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainLangkah 5: Lakukan Perubahan
Section titled “Langkah 5: Lakukan Perubahan”Praktek Pembangunan
Section titled “Praktek Pembangunan”- Tulis kode mengikuti Standar PHP
- Tes tulis untuk fungsi baru
- Perbarui dokumentasi jika diperlukan
- Jalankan linter dan pemformat kode
Pemeriksaan Kualitas Kode
Section titled “Pemeriksaan Kualitas Kode”# 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 yang Baik
Section titled “Lakukan Perubahan yang Baik”# 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: Jaga agar Cabang tetap Sinkron
Section titled “Langkah 6: Jaga agar Cabang tetap Sinkron”Saat mengerjakan fitur Anda, cabang utama mungkin maju:
# 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: Dorong ke Garpu Anda
Section titled “Langkah 7: Dorong ke Garpu Anda”# 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
Section titled “Langkah 8: Buat Permintaan Tarik”Di Antarmuka Web GitHub
Section titled “Di Antarmuka Web GitHub”- Buka cabang Anda di GitHub
- Anda akan melihat notifikasi untuk membuat PR dari cabang Anda
- Klik “Bandingkan & tarik permintaan”
- Atau klik secara manual “Permintaan penarikan baru” dan pilih cabang Anda
Judul dan Deskripsi PR
Section titled “Judul dan Deskripsi PR”Format Judul:
<type>(<scope>): <subject>Contoh:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceTemplate Deskripsi:
## 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 locallyDaftar Periksa Tinjauan Humas
Section titled “Daftar Periksa Tinjauan Humas”Sebelum mengirimkan, pastikan:
- Kode mengikuti Standar PHP
- Tes disertakan dan lulus
- Dokumentasi diperbarui (jika diperlukan)
- Tidak ada konflik penggabungan
- Pesan komit jelas
- Masalah terkait dirujuk
- Deskripsi PR dirinci
- Tidak ada kode debug atau log konsol
Langkah 9: Tanggapi Masukan
Section titled “Langkah 9: Tanggapi Masukan”Selama Peninjauan Kode
Section titled “Selama Peninjauan Kode”- Baca komentar dengan cermat - Pahami masukannya
- Ajukan pertanyaan - Jika kurang jelas, mintalah klarifikasi
- Diskusikan alternatif - Debatkan pendekatan dengan penuh hormat
- Lakukan perubahan yang diminta - Perbarui cabang Anda
- Force-push update commit - Jika menulis ulang riwayat
# 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-featureHarapkan Iterasi
Section titled “Harapkan Iterasi”- Kebanyakan PR memerlukan beberapa putaran peninjauan
- Bersabarlah dan konstruktif
- Lihat umpan balik sebagai kesempatan belajar
- Pengelola mungkin menyarankan refactors
Langkah 10: Gabungkan dan Bersihkan
Section titled “Langkah 10: Gabungkan dan Bersihkan”Setelah Persetujuan
Section titled “Setelah Persetujuan”Setelah pengelola menyetujui dan menggabungkan:
- Penggabungan otomatis GitHub atau penggabungan klik pengelola
- Cabang Anda dihapus (biasanya otomatis)
- Perubahan terjadi di bagian hulu
Pembersihan Lokal
Section titled “Pembersihan Lokal”# 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-featureDiagram Alur Kerja
Section titled “Diagram Alur Kerja”graph 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]Skenario Umum
Section titled “Skenario Umum”Sinkronisasi Sebelum Memulai
Section titled “Sinkronisasi Sebelum Memulai”# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainMenambahkan Lebih Banyak Komit
Section titled “Menambahkan Lebih Banyak Komit”# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingMemperbaiki Kesalahan
Section titled “Memperbaiki Kesalahan”# 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 changesMenangani Konflik Penggabungan
Section titled “Menangani Konflik Penggabungan”# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leasePraktik Terbaik
Section titled “Praktik Terbaik”Lakukan
Section titled “Lakukan”- Jaga agar cabang tetap fokus pada satu isu
- Buatlah komitmen yang kecil dan logis
- Tulis pesan komit deskriptif
- Perbarui cabang Anda sesering mungkin
- Uji sebelum mendorong
- Perubahan dokumen
- Responsif terhadap umpan balik
Jangan- Bekerja langsung di cabang main/master
Section titled “Jangan- Bekerja langsung di cabang main/master”- Campurkan perubahan yang tidak terkait dalam satu PR
- Komit file yang dihasilkan atau node_modules
- Paksa dorongan setelah PR dipublikasikan (gunakan —force-with-lease)
- Abaikan umpan balik peninjauan kode
- Buat PR besar (pecah menjadi PR yang lebih kecil)
- Melakukan data sensitif (kunci API, kata sandi)
Tips Sukses
Section titled “Tips Sukses”Berkomunikasi
Section titled “Berkomunikasi”- Ajukan pertanyaan dalam masalah sebelum mulai bekerja
- Mintalah panduan tentang perubahan yang kompleks
- Diskusikan pendekatan dalam deskripsi PR
- Tanggapi umpan balik dengan segera
Ikuti Standar
Section titled “Ikuti Standar”- Tinjau Standar PHP
- Periksa pedoman Pelaporan Masalah
- Baca Ikhtisar Berkontribusi
- Ikuti Pedoman Permintaan Tarik
Pelajari Basis Kode
Section titled “Pelajari Basis Kode”- Baca pola kode yang ada
- Pelajari implementasi serupa
- Memahami arsitektur
- Periksa Konsep core
Dokumentasi Terkait
Section titled “Dokumentasi Terkait”- Kode Etik
- Pedoman Permintaan Tarik
- Pelaporan Masalah
- Standar Pengkodean PHP
- Ikhtisar Kontribusi
#xoops #git #github #kontribusi #alur kerja #pull-request