Contributions Workflow
Dieser Leitfaden führt dich durch den gesamten Prozess eines Beitrags zu XOOPS, von der initialen Einrichtung bis zum zusammengeführten Pull Request.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“Bevor du mit dem Beitragen anfängst, stelle sicher, dass du folgendes hast:
- Git installiert und konfiguriert
- GitHub Account (kostenlos)
- PHP 7.4+ für XOOPS Entwicklung
- Composer für Dependency Management
- Grundkenntnisse von Git Workflows
- Vertrautheit mit Code of Conduct
Schritt 1: Repository forken
Abschnitt betitelt „Schritt 1: Repository forken“Auf GitHub Web Interface
Abschnitt betitelt „Auf GitHub Web Interface“- Navigiere zum Repository (z.B.
XOOPS/XoopsCore27) - Klicke den Fork Button in der oberen rechten Ecke
- Wähle wo zu forken (dein persönliches Konto)
- Warte auf Fork Abschluss
Warum Forken?
Abschnitt betitelt „Warum Forken?“- Du bekommst deine eigene Kopie zum Arbeiten
- Verwalter brauchen nicht viele Branches zu verwalten
- Du hast vollständige Kontrolle über deinen Fork
- Pull Requests referenzieren deinen Fork und das upstream Repo
Schritt 2: Deinen Fork lokal klonen
Abschnitt betitelt „Schritt 2: Deinen Fork lokal klonen“# 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)Schritt 3: Entwicklungsumgebung einrichten
Abschnitt betitelt „Schritt 3: Entwicklungsumgebung einrichten“Dependencies installieren
Abschnitt betitelt „Dependencies installieren“# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installGit konfigurieren
Abschnitt betitelt „Git konfigurieren“# 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"Tests ausführen
Abschnitt betitelt „Tests ausführen“# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitSchritt 4: Feature Branch erstellen
Abschnitt betitelt „Schritt 4: Feature Branch erstellen“Branch Benennungskonvention
Abschnitt betitelt „Branch Benennungskonvention“Folge diesem Muster: <type>/<description>
Types:
feature/- Neue Funktionfix/- Fehlerbehebungdocs/- Nur Dokumentationrefactor/- Code Umstrukturierungtest/- Test Additionschore/- Wartung, Tooling
Beispiele:
# 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/mainBranch aktualisiert halten
Abschnitt betitelt „Branch aktualisiert halten“# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainSchritt 5: Deine Änderungen vornehmen
Abschnitt betitelt „Schritt 5: Deine Änderungen vornehmen“Entwicklungs-Praktiken
Abschnitt betitelt „Entwicklungs-Praktiken“- Schreibe Code nach PHP Standards
- Schreibe Tests für neue Funktionalität
- Aktualisiere Dokumentation falls nötig
- Führe Linter aus und Code Formatter
Code Quality Checks
Abschnitt betitelt „Code Quality Checks“# 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/Gute Änderungen committen
Abschnitt betitelt „Gute Änderungen committen“# 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"Schritt 6: Branch in Sync halten
Abschnitt betitelt „Schritt 6: Branch in Sync halten“Während du an deiner Funktion arbeitest, kann der Main Branch voranschreiten:
# 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 --continueSchritt 7: Zu deinem Fork pushen
Abschnitt betitelt „Schritt 7: Zu deinem Fork pushen“# 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-featureSchritt 8: Pull Request erstellen
Abschnitt betitelt „Schritt 8: Pull Request erstellen“Auf GitHub Web Interface
Abschnitt betitelt „Auf GitHub Web Interface“- Gehe zu deinem Fork auf GitHub
- Du wirst eine Benachrichtigung sehen, einen PR von deinem Branch zu erstellen
- Klicke “Compare & pull request”
- Oder klicke manuell “New pull request” und wähle deinen Branch
PR Titel und Beschreibung
Abschnitt betitelt „PR Titel und Beschreibung“Titel Format:
<type>(<scope>): <subject>Beispiele:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceBeschreibungs-Vorlage:
## BeschreibungKurze Erklärung, was dieser PR tut.
## Änderungen- Änderte X von A zu B- Fügte Funktion Y hinzu- Behob Fehler Z
## Änderungstyp- [ ] Neue Funktion (fügt Funktionalität hinzu)- [ ] Fehlerbehebung (behebt ein Thema)- [ ] Breaking Change (API/Verhaltens Änderung)- [ ] Dokumentation Update
## Testen- [ ] Tests für neue Funktionalität hinzugefügt- [ ] Alle bestehenden Tests bestehen- [ ] Manuelles Testen durchgeführt
## Screenshots (falls zutreffend)Schließe Before/After Screenshots für UI Änderungen ein.
## Verwandte ProblemeCloses #123Related to #456
## Checkliste- [ ] Code folgt Style-Richtlinien- [ ] Selbst-Review durchgeführt- [ ] Komplexen Code kommentiert- [ ] Dokumentation aktualisiert- [ ] Keine neuen Warnings generiert- [ ] Tests bestehen lokalPR Review Checkliste
Abschnitt betitelt „PR Review Checkliste“Vor dem Einreichen, stelle sicher:
- Code folgt PHP Standards
- Tests sind enthalten und bestehen
- Dokumentation aktualisiert (falls nötig)
- Keine Merge Konflikte
- Commit Messages sind klar
- Verwandte Probleme sind referenziert
- PR Beschreibung ist detailliert
- Keine Debug Code oder Console Logs
Schritt 9: Auf Feedback reagieren
Abschnitt betitelt „Schritt 9: Auf Feedback reagieren“Während Code Review
Abschnitt betitelt „Während Code Review“- Lies Kommentare sorgfältig - Verstehe das Feedback
- Stelle Fragen - Wenn unklar, frag um Klarstellung
- Diskutiere Alternativen - Respektvoll debattiere Ansätze
- Mache angeforderte Änderungen - Aktualisiere deinen Branch
- Force-push aktualisierte Commits - Falls History umgeschrieben wird
# 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-featureErwarte Iteration
Abschnitt betitelt „Erwarte Iteration“- Die meisten PRs erfordern mehrere Review Runden
- Sei geduldig und konstruktiv
- Sehe Feedback als Lernmöglichkeit
- Verwalter könnten Umstrukturierungen vorschlagen
Schritt 10: Merge und Aufräumen
Abschnitt betitelt „Schritt 10: Merge und Aufräumen“Nach Genehmigung
Abschnitt betitelt „Nach Genehmigung“Sobald Verwalter genehmigen und mergen:
- GitHub auto-merges oder Verwalter klickt Merge
- Dein Branch wird gelöscht (normalerweise automatisch)
- Änderungen sind im Upstream
Lokales Aufräumen
Abschnitt betitelt „Lokales Aufräumen“# 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 Diagramm
Abschnitt betitelt „Workflow Diagramm“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]Häufige Szenarien
Abschnitt betitelt „Häufige Szenarien“Vor dem Start synchronisieren
Abschnitt betitelt „Vor dem Start synchronisieren“# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainMehr Commits hinzufügen
Abschnitt betitelt „Mehr Commits hinzufügen“# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingFehler beheben
Abschnitt betitelt „Fehler beheben“# 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 changesMerge Konflikte handhaben
Abschnitt betitelt „Merge Konflikte handhaben“# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseBest Practices
Abschnitt betitelt „Best Practices“- Branches auf einzelne Themen fokussieren
- Kleine, logische Commits machen
- Aussagekräftige Commit Messages schreiben
- Deinen Branch häufig aktualisieren
- Vor dem Push testen
- Änderungen dokumentieren
- Schnell auf Feedback reagieren
Nicht tun
Abschnitt betitelt „Nicht tun“- Direkt auf Main/Master Branch arbeiten
- Unverwandte Änderungen in einem PR mischen
- Generierte Dateien oder node_modules committen
- Force Push nach PR öffentlich (—force-with-lease verwenden)
- Code Review Feedback ignorieren
- Riesige PRs erstellen (in kleinere aufteilen)
- Sensitive Daten committen (API Keys, Passwords)
Tipps für Erfolg
Abschnitt betitelt „Tipps für Erfolg“Kommuniziere
Abschnitt betitelt „Kommuniziere“- Stelle Fragen in Problemen, bevor du arbeitest
- Frag um Anleitung bei komplexen Änderungen
- Diskutiere Ansatz in PR Beschreibung
- Reagiere schnell auf Feedback
Folge Standards
Abschnitt betitelt „Folge Standards“- Überprüfe PHP Standards
- Überprüfe Issue Reporting Richtlinien
- Lies Contributing Overview
- Folge Pull Request Guidelines
Lerne das Codebase
Abschnitt betitelt „Lerne das Codebase“- Lese bestehenden Code
- Studiere ähnliche Implementierungen
- Verstehe die Architektur
- Überprüfe Core Concepts
Verwandte Dokumentation
Abschnitt betitelt „Verwandte Dokumentation“- Code of Conduct
- Pull Request Guidelines
- Issue Reporting
- PHP Coding Standards
- Contributing Overview
#xoops #git #github #contributing #workflow #pull-request