Zum Inhalt springen

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.

1. Besuche das GitHub Repository
2. Gehe zum Issues Tab
3. Suche nach bestehenden Problemen im Zusammenhang mit deiner Änderung
4. Überprüfe sowohl offene als auch geschlossene Probleme
Terminal-Fenster
# Fork the repository on GitHub
# Click "Fork" button on the repository page
# Clone your fork
git clone https://github.com/YOUR_USERNAME/XOOPS.git
cd XOOPS
# Add upstream remote
git remote add upstream https://github.com/XOOPS/XOOPS.git
# Verify remotes
git remote -v
# Should show: origin (your fork) and upstream (official)
Terminal-Fenster
# Update main branch
git fetch upstream
git checkout main
git merge upstream/main
# Create feature branch
# Use descriptive names: bugfix/issue-number or feature/description
git checkout -b bugfix/123-fix-database-connection
git checkout -b feature/add-psr-7-support
Terminal-Fenster
# Make changes to your files
# Follow code style guidelines
# Stage changes
git add .
# Commit with clear message
git commit -m "Fix database connection timeout issue"
# Create multiple commits for logical changes
git commit -m "Add connection retry logic"
git commit -m "Improve error messages for debugging"

Verwende klare, aussagekräftige Messages nach diesen Mustern:

# Format
<type>: <subject>
<body>
<footer>
# Example 1: Bug fix
fix: 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: Feature
feat: 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 signature
TypeBeschreibungBeispiel
featNeue Funktionfeat: add user dashboard widget
fixFehlerbehebungfix: resolve cache invalidation bug
docsDokumentationdocs: update API reference
styleCode Style (keine Logik-Änderung)style: format imports
refactorCode Umstrukturierungrefactor: simplify service layer
perfLeistungsverbesserungperf: optimize database queries
testTest Änderungentest: add integration tests
choreBuild/Tooling Änderungenchore: update dependencies
## Beschreibung
Klare Beschreibung der vorgenommenen Änderungen und warum.
## Änderungstyp
- [ ] Fehlerbehebung
- [ ] Neue Funktion
- [ ] Breaking Change
- [ ] Dokumentation Update
## Verwandte Probleme
Closes #123
Related 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 laufen

Befolge Code-Style Richtlinien:

<?php
// Good: PSR-12 style
namespace 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]);
}
}
tests/Feature/DatabaseConnectionTest.php
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);
}
}
Terminal-Fenster
# Run all tests
vendor/bin/phpunit
# Run specific test file
vendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# Run with coverage
vendor/bin/phpunit --coverage-html coverage/
Terminal-Fenster
# Fetch latest from upstream
git 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 --continue
[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 class
  1. Korrektheit

    • Löst der Code das genannte Problem?
    • Werden Edge Cases behandelt?
    • Ist die Fehlerbehandlung angemessen?
  2. Qualität

    • Folgt es Codierungsstandards?
    • Ist es wartbar?
    • Ist es gut getestet?
  3. Leistung

    • Irgendwelche Leistungs-Rückgänge?
    • Sind Abfragen optimiert?
    • Ist Speicher-Verwendung angemessen?
  4. Sicherheit

    • Input Validierung?
    • SQL Injection Prävention?
    • Authentifizierung/Autorisierung?
Terminal-Fenster
# Address feedback
# Edit files based on review comments
# Commit changes
git commit -m "Address code review feedback
- Add additional error handling
- Improve test coverage for edge cases
- Update documentation"
# Push changes
git push origin bugfix/123-fix-database-connection

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: Reviewer können Funktionalität nicht verifizieren

Lösung: Füge umfassende Tests hinzu, bevor eingereicht wird

Problem: Dein Branch ist nicht in Sync mit Main

Lösung: Rebase auf neueste Main

Terminal-Fenster
git fetch upstream
git rebase upstream/main
git push -f origin your-branch
Terminal-Fenster
# Switch to main
git checkout main
# Update main
git pull upstream main
# Delete local branch
git branch -d bugfix/123-fix-database-connection
# Delete remote branch
git push origin --delete bugfix/123-fix-database-connection
  • 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
  • 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
  • ../Contributing - Contributing overview
  • Code-Style - Code style guidelines
  • ../../03-Module-Development/Best-Practices/Testing - Testing best practices
  • ../Architecture-Decisions/ADR-Index - Architectural guidelines

Last Updated: 2026-01-31 Applies To: All XOOPS projects Repository: https://github.com/XOOPS/XOOPS