Bidragsarbejdsgang
Denne guide guider dig gennem hele processen med at bidrage til XOOPS, fra den indledende opsætning til den fusionerede pull-anmodning.
Forudsætninger
Sektion kaldt “Forudsætninger”Før du begynder at bidrage, skal du sikre dig, at du har:
- Git installeret og konfigureret
- GitHub konto (gratis)
- PHP 7.4+ til XOOPS udvikling
- Komponist til afhængighedsstyring
- Grundlæggende kendskab til Git arbejdsgange
- Kendskab til Code of Conduct
Trin 1: Fork the Repository
Sektion kaldt “Trin 1: Fork the Repository”På GitHub webgrænseflade
Sektion kaldt “På GitHub webgrænseflade”- Naviger til lageret (f.eks.
XOOPS/XoopsCore27) - Klik på knappen Fork i øverste højre hjørne
- Vælg, hvor der skal fordeles (din personlige konto)
- Vent på, at gaflen er færdig
Hvorfor Fork?
Sektion kaldt “Hvorfor Fork?”- Du får dit eget eksemplar at arbejde videre med
- Vedligeholdere behøver ikke at styre mange filialer
- Du har fuld kontrol over din gaffel
- Pull Requests refererer til din gaffel og opstrøms repo
Trin 2: Klon din gaffel lokalt
Sektion kaldt “Trin 2: Klon din gaffel lokalt”# 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)Trin 3: Opsæt udviklingsmiljø
Sektion kaldt “Trin 3: Opsæt udviklingsmiljø”Installer afhængigheder
Sektion kaldt “Installer afhængigheder”# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installKonfigurer Git
Sektion kaldt “Konfigurer 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"Kør test
Sektion kaldt “Kør test”# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitTrin 4: Opret funktionsgren
Sektion kaldt “Trin 4: Opret funktionsgren”Filialnavnekonvention
Sektion kaldt “Filialnavnekonvention”Følg dette mønster: <type>/<description>
Typer:
feature/- Ny funktionfix/- Fejlrettelsedocs/- Kun dokumentationrefactor/- Kode refactoringtest/- Testtilføjelserchore/- Vedligeholdelse, værktøj
Eksempler:
# 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/mainHold afdelingen opdateret
Sektion kaldt “Hold afdelingen opdateret”# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainTrin 5: Foretag dine ændringer
Sektion kaldt “Trin 5: Foretag dine ændringer”Udviklingspraksis
Sektion kaldt “Udviklingspraksis”- Skriv kode efter PHP-standarderne
- Skriv test for ny funktionalitet
- Opdater dokumentation om nødvendigt
- Kør linters og kodeformatere
Kodekvalitetstjek
Sektion kaldt “Kodekvalitetstjek”# 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/Begå gode ændringer
Sektion kaldt “Begå gode ændringer”# 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"Trin 6: Hold grenen synkroniseret
Sektion kaldt “Trin 6: Hold grenen synkroniseret”Mens du arbejder på din funktion, kan hovedgrenen gå videre:
# 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 --continueTrin 7: Skub til din gaffel
Sektion kaldt “Trin 7: Skub til din gaffel”# 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-featureTrin 8: Opret pull-anmodning
Sektion kaldt “Trin 8: Opret pull-anmodning”På GitHub webgrænseflade
Sektion kaldt “På GitHub webgrænseflade”- Gå til din gaffel på GitHub
- Du vil se en meddelelse om at oprette en PR fra din filial
- Klik på “Sammenlign og træk anmodning”
- Eller klik manuelt på “Ny pull request” og vælg din filial
PR-titel og beskrivelse
Sektion kaldt “PR-titel og beskrivelse”Titelformat:
<type>(<scope>): <subject>Eksempler:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceBeskrivelsesskabelon:
## 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 locallyPR Review Tjekliste
Sektion kaldt “PR Review Tjekliste”Før du indsender, skal du sikre dig:
- Koden følger PHP standarder
- Prøver er inkluderet og består
- Dokumentation opdateret (hvis nødvendigt)
- Ingen fusionskonflikter
- Forpligtelsesbeskeder er klare
- Der henvises til relaterede emner
- PR-beskrivelsen er detaljeret
- Ingen fejlretningskode eller konsollogfiler
Trin 9: Svar på feedback
Sektion kaldt “Trin 9: Svar på feedback”Under kodegennemgang
Sektion kaldt “Under kodegennemgang”- Læs kommentarer omhyggeligt - Forstå feedbacken
- Stil spørgsmål - Hvis det er uklart, så bed om afklaring
- Druter alternativer - Debatter respektfuldt tilgange
- Foretag ønskede ændringer - Opdater din filial
- Force-push opdaterede commits - Hvis historikken omskrives
# 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-featureForvent iteration
Sektion kaldt “Forvent iteration”- De fleste PR’er kræver flere gennemgangsrunder
- Vær tålmodig og konstruktiv
- Se feedback som læringsmulighed
- Vedligeholdere kan foreslå refaktorer
Trin 10: Sammenfletning og oprydning
Sektion kaldt “Trin 10: Sammenfletning og oprydning”Efter godkendelse
Sektion kaldt “Efter godkendelse”Når vedligeholdere godkender og fusionerer:
- GitHub flettes automatisk eller vedligeholdelsesklik flettes
- Din filial er slettet (normalt automatisk)
- Ændringer er i upstream
Lokal oprydning
Sektion kaldt “Lokal oprydning”# 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-featureWorkflow-diagram
Sektion kaldt “Workflow-diagram”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]Almindelige scenarier
Sektion kaldt “Almindelige scenarier”Synkronisering før start
Sektion kaldt “Synkronisering før start”# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainTilføjelse af flere tilsagn
Sektion kaldt “Tilføjelse af flere tilsagn”# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingUdbedring af fejl
Sektion kaldt “Udbedring af fejl”# 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 changesHåndtering af flettekonflikter
Sektion kaldt “Håndtering af flettekonflikter”# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseBedste praksis
Sektion kaldt “Bedste praksis”- Hold filialer fokuseret på enkelte emner
- Lav små, logiske forpligtelser
- Skriv beskrivende forpligtelsesbeskeder
- Opdater din filial ofte
- Test før du skubber
- Dokumentændringer
- Vær lydhør over for feedback
Lad være- Arbejde direkte på hoved-/mastergren
Sektion kaldt “Lad være- Arbejde direkte på hoved-/mastergren”- Bland ikke-relaterede ændringer i én PR
- Commit genererede filer eller node_modules
- Tving push efter PR er offentlig (brug —force-with-lease)
- Ignorer feedback om kodegennemgang
- Opret enorme PR’er (bræk op i mindre)
- Send følsomme data (API nøgler, adgangskoder)
Tips til succes
Sektion kaldt “Tips til succes”Kommuniker
Sektion kaldt “Kommuniker”- Stil spørgsmål i spørgsmål inden arbejdet påbegyndes
- Bed om vejledning om komplekse ændringer
- Diskuter tilgang i PR-beskrivelsen
- Svar på feedback omgående
Følg standarder
Sektion kaldt “Følg standarder”- Gennemgå PHP standarder
- Tjek retningslinjer for problemrapportering
- Læs bidragende oversigt
- Følg retningslinjerne for Pull Request
Lær kodebasen
Sektion kaldt “Lær kodebasen”- Læs eksisterende kodemønstre
- Undersøg lignende implementeringer
- Forstå arkitekturen
- Tjek kernekoncepter
Relateret dokumentation
Sektion kaldt “Relateret dokumentation”- Code of Conduct
- Pull Request Guidelines
- Problemrapportering
- PHP kodningsstandarder
- Bidragende overblik
#xoops #git #github #bidragende #workflow #pull-request