Pull Request Richtlinien
Dieses Dokument bietet umfassende Richtlinien für das Einreichen von Pull Requests in XOOPS-Projekten. Die Befolgung dieser Richtlinien gewährleistet reibungslose Code-Reviews und schnellere Merge-Zeiten.
Vor dem Erstellen eines Pull Request
Abschnitt betitelt „Vor dem Erstellen eines Pull Request“Schritt 1: Bestehende Probleme überprüfen
Abschnitt betitelt „Schritt 1: Bestehende Probleme überprüfen“1. Besuche das GitHub Repository2. Gehe zum Issues Tab3. Suche nach bestehenden Problemen im Zusammenhang mit deiner Änderung4. Überprüfe sowohl offene als auch geschlossene ProblemeSchritt 2: Repository forken und klonen
Abschnitt betitelt „Schritt 2: Repository forken und klonen“# Fork the repository on GitHub# Click "Fork" button on the repository page
# Clone your forkgit clone https://github.com/YOUR_USERNAME/XOOPS.gitcd XOOPS
# Add upstream remotegit remote add upstream https://github.com/XOOPS/XOOPS.git
# Verify remotesgit remote -v# Should show: origin (your fork) and upstream (official)Schritt 3: Feature Branch erstellen
Abschnitt betitelt „Schritt 3: Feature Branch erstellen“# Update main branchgit fetch upstreamgit checkout maingit merge upstream/main
# Create feature branch# Use descriptive names: bugfix/issue-number or feature/descriptiongit checkout -b bugfix/123-fix-database-connectiongit checkout -b feature/add-psr-7-supportSchritt 4: Deine Änderungen vornehmen
Abschnitt betitelt „Schritt 4: Deine Änderungen vornehmen“# Make changes to your files# Follow code style guidelines
# Stage changesgit add .
# Commit with clear messagegit commit -m "Fix database connection timeout issue"
# Create multiple commits for logical changesgit commit -m "Add connection retry logic"git commit -m "Improve error messages for debugging"Commit Message Standards
Abschnitt betitelt „Commit Message Standards“Gute Commit Messages
Abschnitt betitelt „Gute Commit Messages“Verwende klare, aussagekräftige Messages nach diesen Mustern:
# Format<type>: <subject>
<body>
<footer>
# Example 1: Bug fixfix: resolve database connection timeout
Add exponential backoff retry mechanism to database connection.Connections now retry up to 3 times with increasing delays.
Fixes #123# Example 2: Featurefeat: implement PSR-7 HTTP message interfaces
Implement Psr\Http\Message interfaces for request/response handling.Provides type-safe HTTP message handling across the framework.
BREAKING CHANGE: Updated RequestHandler signatureCommit Type Kategorien
Abschnitt betitelt „Commit Type Kategorien“| Type | Beschreibung | Beispiel |
|---|---|---|
feat | Neue Funktion | feat: add user dashboard widget |
fix | Fehlerbehebung | fix: resolve cache invalidation bug |
docs | Dokumentation | docs: update API reference |
style | Code Style (keine Logik-Änderung) | style: format imports |
refactor | Code Umstrukturierung | refactor: simplify service layer |
perf | Leistungsverbesserung | perf: optimize database queries |
test | Test Änderungen | test: add integration tests |
chore | Build/Tooling Änderungen | chore: update dependencies |
Pull Request Beschreibung
Abschnitt betitelt „Pull Request Beschreibung“PR Vorlage
Abschnitt betitelt „PR Vorlage“## BeschreibungKlare Beschreibung der vorgenommenen Änderungen und warum.
## Änderungstyp- [ ] Fehlerbehebung- [ ] Neue Funktion- [ ] Breaking Change- [ ] Dokumentation Update
## Verwandte ProblemeCloses #123Related to #456
## Vorgenommene Änderungen- Änderung 1- Änderung 2- Änderung 3
## Testen- [ ] Lokal getestet- [ ] Alle Tests bestanden- [ ] Neue Tests hinzugefügt- [ ] Manuelle Test-Schritte eingefügt
## Checkliste- [ ] Code folgt Style-Richtlinien- [ ] Selbst-Review abgeschlossen- [ ] Kommentare für komplexe Logik hinzugefügt- [ ] Dokumentation aktualisiert- [ ] Keine neuen Warnings generiert- [ ] Tests für neue Funktionalität hinzugefügt- [ ] Alle Tests laufenCode-Qualitäts-Anforderungen
Abschnitt betitelt „Code-Qualitäts-Anforderungen“Code Style
Abschnitt betitelt „Code Style“Befolge Code-Style Richtlinien:
<?php// Good: PSR-12 stylenamespace MyModule\Controller;
use MyModule\Model\Item;use MyModule\Repository\ItemRepository;
class ItemController{ private ItemRepository $repository;
public function __construct(ItemRepository $repository) { $this->repository = $repository; }
public function indexAction() { $items = $this->repository->findAll(); return $this->render('items', ['items' => $items]); }}Test-Anforderungen
Abschnitt betitelt „Test-Anforderungen“Unit Tests
Abschnitt betitelt „Unit Tests“namespace Tests\Feature;
use PHPUnit\Framework\TestCase;use Xoops\Database\XoopsDatabase;
class DatabaseConnectionTest extends TestCase{ private XoopsDatabase $database;
protected function setUp(): void { $this->database = new XoopsDatabase(); }
public function testConnectionWithValidCredentials() { $result = $this->database->connect(); $this->assertTrue($result); }
public function testConnectionWithInvalidCredentials() { $this->database->setCredentials('invalid', 'invalid'); $result = $this->database->connect(); $this->assertFalse($result); }}Tests ausführen
Abschnitt betitelt „Tests ausführen“# Run all testsvendor/bin/phpunit
# Run specific test filevendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# Run with coveragevendor/bin/phpunit --coverage-html coverage/Mit Branches arbeiten
Abschnitt betitelt „Mit Branches arbeiten“Branch aktualisiert halten
Abschnitt betitelt „Branch aktualisiert halten“# Fetch latest 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 --continuePull Request erstellen
Abschnitt betitelt „Pull Request erstellen“PR Titel Format
Abschnitt betitelt „PR Titel Format“[Type] Short description (fix/feature/docs)
Examples:- [FIX] Resolve database connection timeout issue (#123)- [FEATURE] Implement PSR-7 HTTP message interfaces- [DOCS] Update API reference for Criteria classCode Review Prozess
Abschnitt betitelt „Code Review Prozess“Worauf Reviewer achten
Abschnitt betitelt „Worauf Reviewer achten“-
Korrektheit
- Löst der Code das genannte Problem?
- Werden Edge Cases behandelt?
- Ist die Fehlerbehandlung angemessen?
-
Qualität
- Folgt es Codierungsstandards?
- Ist es wartbar?
- Ist es gut getestet?
-
Leistung
- Irgendwelche Leistungs-Rückgänge?
- Sind Abfragen optimiert?
- Ist Speicher-Verwendung angemessen?
-
Sicherheit
- Input Validierung?
- SQL Injection Prävention?
- Authentifizierung/Autorisierung?
Auf Feedback reagieren
Abschnitt betitelt „Auf Feedback reagieren“# Address feedback# Edit files based on review comments
# Commit changesgit commit -m "Address code review feedback
- Add additional error handling- Improve test coverage for edge cases- Update documentation"
# Push changesgit push origin bugfix/123-fix-database-connectionHäufige PR Probleme und Lösungen
Abschnitt betitelt „Häufige PR Probleme und Lösungen“Problem 1: PR ist zu groß
Abschnitt betitelt „Problem 1: PR ist zu groß“Problem: Reviewer können massive PRs nicht effektiv überprüfen
Lösung: Teile in kleinere PRs auf
- Erster PR: Kern-Änderungen
- Zweiter PR: Tests
- Dritter PR: Dokumentation
Problem 2: Keine Tests enthalten
Abschnitt betitelt „Problem 2: Keine Tests enthalten“Problem: Reviewer können Funktionalität nicht verifizieren
Lösung: Füge umfassende Tests hinzu, bevor eingereicht wird
Problem 3: Konflikte mit Main
Abschnitt betitelt „Problem 3: Konflikte mit Main“Problem: Dein Branch ist nicht in Sync mit Main
Lösung: Rebase auf neueste Main
git fetch upstreamgit rebase upstream/maingit push -f origin your-branchNach dem Merge
Abschnitt betitelt „Nach dem Merge“Aufräumen
Abschnitt betitelt „Aufräumen“# Switch to maingit checkout main
# Update maingit pull upstream main
# Delete local branchgit branch -d bugfix/123-fix-database-connection
# Delete remote branchgit push origin --delete bugfix/123-fix-database-connectionBest Practices Zusammenfassung
Abschnitt betitelt „Best Practices Zusammenfassung“- Aussagekräftige Commit Messages erstellen
- Fokussierte, Single-Purpose PRs machen
- Tests für neue Funktionalität einschließen
- Dokumentation aktualisieren
- Verwandte Probleme referenzieren
- PR Beschreibungen klar halten
- Schnell auf Reviews reagieren
Nicht tun
Abschnitt betitelt „Nicht tun“- Unverwandte Änderungen einschließen
- Main in deinen Branch mergen (Rebase verwenden)
- Nach Review-Start Force Push
- Tests überspringen
- Work in Progress einreichen
- Code Review Feedback ignorieren
Verwandte Dokumentation
Abschnitt betitelt „Verwandte Dokumentation“- ../Contributing - Contributing overview
- Code-Style - Code style guidelines
- ../../03-Module-Development/Best-Practices/Testing - Testing best practices
- ../Architecture-Decisions/ADR-Index - Architectural guidelines
Ressourcen
Abschnitt betitelt „Ressourcen“Last Updated: 2026-01-31 Applies To: All XOOPS projects Repository: https://github.com/XOOPS/XOOPS