Pull Request Guidelines
Dette dokument giver omfattende retningslinjer for indsendelse af pull-anmodninger til XOOPS-projekter. At følge disse retningslinjer sikrer jævne kodegennemgange og hurtigere flettetider.
Før du opretter en pull-anmodning
Sektion kaldt “Før du opretter en pull-anmodning”Trin 1: Tjek for eksisterende problemer
Sektion kaldt “Trin 1: Tjek for eksisterende problemer”1. Visit the GitHub repository2. Go to Issues tab3. Search for existing issues related to your change4. Check both open and closed issuesTrin 2: Fordel og klon depotet
Sektion kaldt “Trin 2: Fordel og klon depotet”# 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)Trin 3: Opret en funktionsgren
Sektion kaldt “Trin 3: Opret en funktionsgren”# 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-supportTrin 4: Foretag dine ændringer
Sektion kaldt “Trin 4: Foretag dine ændringer”# 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
Sektion kaldt “Commit Message Standards”Gode forpligtelsesbeskeder
Sektion kaldt “Gode forpligtelsesbeskeder”Brug klare, beskrivende budskaber efter disse mønstre:
# 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 Kategorier
Sektion kaldt “Commit Type Kategorier”| Skriv | Beskrivelse | Eksempel |
|---|---|---|
feat | Ny funktion | feat: add user dashboard widget |
fix | Fejlrettelse | fix: resolve cache invalidation bug |
docs | Dokumentation | docs: update API reference |
style | Kodestil (ingen logisk ændring) | style: format imports |
refactor | Kode refactoring | refactor: simplify service layer |
perf | Ydeevneforbedring | perf: optimize database queries |
test | Test ændringer | test: add integration tests |
chore | Byg/værktøjsændringer | chore: update dependencies |
Pull Request Description
Sektion kaldt “Pull Request Description”PR skabelon
Sektion kaldt “PR skabelon”## DescriptionClear description of changes made and why.
## Type of Change- [ ] Bug fix- [ ] New feature- [ ] Breaking change- [ ] Documentation update
## Related IssuesCloses #123Related to #456
## Changes Made- Change 1- Change 2- Change 3
## Testing- [ ] Tested locally- [ ] All tests pass- [ ] Added new tests- [ ] Manual testing steps included
## Checklist- [ ] Code follows style guidelines- [ ] Self-review completed- [ ] Comments added for complex logic- [ ] Documentation updated- [ ] No new warnings generated- [ ] Added tests for new functionality- [ ] All tests passingKodekvalitetskrav
Sektion kaldt “Kodekvalitetskrav”Kodestil
Sektion kaldt “Kodestil”Følg retningslinjerne for kodestil:
<?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]); }}Testkrav
Sektion kaldt “Testkrav”Enhedstest
Sektion kaldt “Enhedstest”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); }}Løbende tests
Sektion kaldt “Løbende tests”# Run all testsvendor/bin/phpunit
# Run specific test filevendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# Run with coveragevendor/bin/phpunit --coverage-html coverage/Arbejde med filialer
Sektion kaldt “Arbejde med filialer”Hold filial opdateret
Sektion kaldt “Hold filial opdateret”# Fetch latest from upstreamgit fetch upstream
# Rebase on latest maingit rebase upstream/main
# Or merge if you prefergit merge upstream/main
# Force push if rebased (warning: only on your branch!)git push -f origin bugfix/123-fix-database-connectionOprettelse af Pull-anmodningen
Sektion kaldt “Oprettelse af Pull-anmodningen”PR-titelformat
Sektion kaldt “PR-titelformat”[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 classKodegennemgangsproces
Sektion kaldt “Kodegennemgangsproces”Hvad anmeldere leder efter
Sektion kaldt “Hvad anmeldere leder efter”-
Korrekthed
- Løser koden det angivne problem?
- Behandles kantsager?
- Er fejlhåndtering hensigtsmæssig?
-
Kvalitet
- Følger den kodningsstandarder?
- Kan det vedligeholdes?
- Er det gennemtestet?
-
Ydeevne
- Nogen præstationsregressioner?
- Er forespørgsler optimeret?
- Er hukommelsesforbruget rimeligt?
-
Sikkerhed
- Input validering?
- SQL injektionsforebyggelse?
- Godkendelse/autorisation?
Svar på feedback
Sektion kaldt “Svar på feedback”# 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-connectionAlmindelige PR-problemer og løsninger
Sektion kaldt “Almindelige PR-problemer og løsninger”Problem 1: PR er for stor
Sektion kaldt “Problem 1: PR er for stor”Problem: Anmeldere kan ikke gennemgå massive PR’er effektivt
Løsning: Bryd op i mindre PR’er
- Første PR: Kerneændringer
- Anden PR: Tests
- Tredje PR: Dokumentation
Udgave 2: Ingen test inkluderet
Sektion kaldt “Udgave 2: Ingen test inkluderet”Problem: Anmeldere kan ikke bekræfte funktionaliteten
Løsning: Tilføj omfattende test, før du indsender
Problem 3: Konflikter med Main
Sektion kaldt “Problem 3: Konflikter med Main”Problem: Din filial er ude af synkronisering med main
Løsning: Rebase på seneste main
git fetch upstreamgit rebase upstream/maingit push -f origin your-branchEfter fletning
Sektion kaldt “Efter fletning”Oprydning
Sektion kaldt “Oprydning”# 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-connectionOversigt over bedste praksis
Sektion kaldt “Oversigt over bedste praksis”- Opret beskrivende forpligtelsesbeskeder
- Lav fokuserede PR’er til en enkelt formål
- Inkluder test for ny funktionalitet
- Opdater dokumentation
- Referencerelaterede spørgsmål
- Hold PR-beskrivelser klare
- Svar omgående på anmeldelser
Lad være
Sektion kaldt “Lad være”- Inkluder ikke-relaterede ændringer
- Flet main ind i din filial (brug rebase)
- Force push efter gennemgang starter
- Spring prøver over
- Indsend igangværende arbejde
- Ignorer feedback om kodegennemgang
Relateret dokumentation
Sektion kaldt “Relateret dokumentation”- ../Contributing - Bidragende overblik
- Code-Style - Code stil retningslinjer
- ../../03-Module-Development/Best-Practices/Testing - Test af bedste praksis
- ../Architecture-Decisions/ADR-Index - Arkitektoniske retningslinjer
Ressourcer
Sektion kaldt “Ressourcer”Sidst opdateret: 31-01-2026 Gælder: Alle XOOPS-projekter Repository: https://github.com/XOOPS/XOOPS