Tijek rada doprinosa
Ovaj vodič vas vodi kroz cijeli proces doprinosa XOOPS, od početnog postavljanja do spojenog zahtjeva za povlačenje.
Preduvjeti
Section titled “Preduvjeti”Prije nego počnete doprinositi, provjerite imate li:
- Git instaliran i konfiguriran
- GitHub račun (besplatno)
- PHP 7.4+ za razvoj XOOPS
- Skladatelj za upravljanje ovisnostima
- Osnovno poznavanje Git radnih procesa
- Poznavanje Kodeksa ponašanja
Korak 1: Račvanje spremišta
Section titled “Korak 1: Račvanje spremišta”Na GitHub web sučelju
Section titled “Na GitHub web sučelju”- Idite do repozitorija (npr.
XOOPS/XoopsCore27) - Kliknite gumb Vilica u gornjem desnom kutu
- Odaberite mjesto za račvanje (vaš osobni račun)
- Pričekajte da se vilica završi
Zašto vilica?
Section titled “Zašto vilica?”- Dobivate vlastitu kopiju na kojoj radite
- Održavatelji ne moraju upravljati mnogim podružnicama
- Imate potpunu kontrolu nad svojom vilicom
- Zahtjevi za povlačenje referenciraju vašu račvu i uzvodni repo
Korak 2: Lokalno klonirajte svoju vilicu
Section titled “Korak 2: Lokalno klonirajte svoju vilicu”# 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)Korak 3: Postavite razvojno okruženje
Section titled “Korak 3: Postavite razvojno okruženje”Ovisnosti instalacije
Section titled “Ovisnosti instalacije”# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installKonfigurirajte Git
Section titled “Konfigurirajte 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"Pokreni testove
Section titled “Pokreni testove”# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitKorak 4: Stvorite granu značajki
Section titled “Korak 4: Stvorite granu značajki”Konvencija o imenovanju grana
Section titled “Konvencija o imenovanju grana”Slijedite ovaj uzorak: <type>/<description>
Vrste:
feature/- Nova značajkafix/- Ispravak bugovadocs/- Samo dokumentacijarefactor/- Refaktoriranje kodatest/- Testni dodacichore/- Održavanje, alati
Primjeri:
# 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/mainOdržavajte podružnicu ažurnom
Section titled “Održavajte podružnicu ažurnom”# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainKorak 5: Unesite svoje promjene
Section titled “Korak 5: Unesite svoje promjene”Razvojne prakse
Section titled “Razvojne prakse”- Napišite kod prema standardima PHP
- Pišite testove za nove funkcije
- Po potrebi ažurirajte dokumentaciju
- Pokrenite linters i programe za oblikovanje koda
Provjere kvalitete koda
Section titled “Provjere kvalitete koda”# 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/Učinite dobre promjene
Section titled “Učinite dobre promjene”# 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"Korak 6: Održavajte podružnicu sinkroniziranom
Section titled “Korak 6: Održavajte podružnicu sinkroniziranom”Dok radite na vašoj značajci, glavna grana može napredovati:
# 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 --continueKorak 7: Gurnite do svoje vilice
Section titled “Korak 7: Gurnite do svoje vilice”# 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-featureKorak 8: Kreirajte zahtjev za povlačenjem
Section titled “Korak 8: Kreirajte zahtjev za povlačenjem”Na GitHub web sučelju
Section titled “Na GitHub web sučelju”- Idite na svoju račvu na GitHubu
- Vidjet ćete obavijest za stvaranje PR-a iz vaše podružnice
- Kliknite “Usporedi i povuci zahtjev”
- Ili ručno kliknite “Novi zahtjev za povlačenjem” i odaberite svoju granu
PR naslov i opis
Section titled “PR naslov i opis”Format naslova:
<type>(<scope>): <subject>Primjeri:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performancepredložak opisa:
## 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 locallyKontrolni popis za pregled PR-a
Section titled “Kontrolni popis za pregled PR-a”Prije podnošenja osigurajte:
- Kod slijedi standarde PHP
- Testovi su included i prolaze
- Ažurirana dokumentacija (ako je potrebno)
- Nema sukoba spajanja
- Poruke predaje su jasne
- Povezana pitanja su navedena
- PR opis je detaljan
- Nema koda za otklanjanje pogrešaka ili zapisa konzole
Korak 9: odgovorite na povratne informacije
Section titled “Korak 9: odgovorite na povratne informacije”Tijekom pregleda koda
Section titled “Tijekom pregleda koda”- Pažljivo pročitajte komentare - Razumite povratne informacije
- Postavljajte pitanja - Ako je nejasno, tražite pojašnjenje
- Razgovarajte o alternativama - S poštovanjem raspravljajte o pristupima
- Napravite tražene promjene - Ažurirajte svoju granu
- Force-push ažurirana predaja - Ako se prepisuje povijest
# 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-featureOčekujte ponavljanje
Section titled “Očekujte ponavljanje”- Većina PR-a zahtijeva više krugova pregleda
- Budite strpljivi i konstruktivni
- Gledajte na povratne informacije kao na priliku za učenje
- Održavatelji mogu predložiti refaktore
---## Korak 10: Spajanje i čišćenje
Nakon odobrenja
Section titled “Nakon odobrenja”Nakon što održavatelji odobre i spoje:
- GitHub automatsko spajanje ili spajanje klikova održavatelja
- Vaša podružnica je izbrisana (obično automatski)
- Promjene su u toku
Lokalno čišćenje
Section titled “Lokalno čišćenje”# 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-featureDijagram tijeka rada
Section titled “Dijagram tijeka rada”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]Uobičajeni scenariji
Section titled “Uobičajeni scenariji”Sinkronizacija prije pokretanja
Section titled “Sinkronizacija prije pokretanja”# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainDodavanje više obveza
Section titled “Dodavanje više obveza”# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingIspravljanje grešaka
Section titled “Ispravljanje grešaka”# 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 changesRukovanje sukobima spajanja
Section titled “Rukovanje sukobima spajanja”# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseNajbolji primjeri iz prakse
Section titled “Najbolji primjeri iz prakse”- Držite podružnice usredotočene na pojedinačne probleme
- Napravite male, logične obveze
- Napišite opisne poruke predaje
- Često ažurirajte svoju granu
- Testirajte prije guranja
- Izmjene dokumenata
- Budite osjetljivi na povratne informacije
- Radite izravno na glavnoj/master grani
- Pomiješajte nepovezane promjene u jedan PR
- Potvrdite generirane datoteke ili node_modules
- Force push nakon što je PR javan (koristite —force-with-lease)
- Zanemarite povratne informacije o pregledu koda
- Stvaranje velikih PR-ova (razbijanje na manje)
- Prijem osjetljivih podataka (ključevi API, lozinke)
Savjeti za uspjeh
Section titled “Savjeti za uspjeh”Komunicirajte
Section titled “Komunicirajte”- Postavljajte pitanja u izdanjima prije početka rada
- Zatražite upute za složene promjene
- Razgovarajte o pristupu u opisu PR-a
- Odmah odgovorite na povratne informacije
Slijedite standarde
Section titled “Slijedite standarde”- Pregledajte standarde PHP
- Provjerite smjernice za prijavu problema
- Pročitajte Pregled doprinosa
- Slijedite smjernice zahtjeva za povlačenjem
Naučite bazu kodova
Section titled “Naučite bazu kodova”- Pročitajte postojeće uzorke koda
- Proučite slične implementacije
- Razumjeti arhitekturu
- Provjerite temeljne koncepte
Povezana dokumentacija
Section titled “Povezana dokumentacija”- Kodeks ponašanja
- Smjernice zahtjeva za povlačenje
- Prijava problema
- PHP Standardi kodiranja
- Pregled doprinosa
#xoops #git #github #contributing #workflow #pull-request