Vytáhněte pokyny k žádosti
Tento dokument poskytuje komplexní pokyny pro odesílání žádostí o stažení do projektů XOOPS. Dodržování těchto pokynů zajišťuje hladké kontroly kódu a rychlejší slučování.
Před vytvořením požadavku na stažení
Sekce “Před vytvořením požadavku na stažení”Krok 1: Zkontrolujte existující problémy
Sekce “Krok 1: Zkontrolujte existující problémy”1. Visit the GitHub repository2. Go to Issues tab3. Search for existing issues related to your change4. Check both open and closed issuesKrok 2: Rozvětvete a klonujte úložiště
Sekce “Krok 2: Rozvětvete a klonujte úložiště”# 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)Krok 3: Vytvořte větev funkcí
Sekce “Krok 3: Vytvořte větev funkcí”# 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-supportKrok 4: Proveďte změny
Sekce “Krok 4: Proveďte změny”# 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"Standardy pro zprávy
Sekce “Standardy pro zprávy”Dobré zprávy o závazcích
Sekce “Dobré zprávy o závazcích”Používejte jasné a popisné zprávy podle těchto vzorů:
# 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 signatureKategorie typu závazku
Sekce “Kategorie typu závazku”| Typ | Popis | Příklad |
|---|---|---|
feat | Nová funkce | feat: add user dashboard widget |
fix | Oprava chyby | fix: resolve cache invalidation bug |
docs | Dokumentace | docs: update API reference |
style | Styl kódu (bez změny logiky) | style: format imports |
refactor | Refaktoring kódu | refactor: simplify service layer |
perf | Zlepšení výkonu | perf: optimize database queries |
test | Testovací změny | test: add integration tests |
chore | Build/tooling změny | chore: update dependencies |
Vytáhněte popis požadavku
Sekce “Vytáhněte popis požadavku”Šablona PR
Sekce “Šablona PR”## 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 passingPožadavky na kvalitu kódu
Sekce “Požadavky na kvalitu kódu”Styl kódu
Sekce “Styl kódu”Postupujte podle pokynů pro styl kódu:
<?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]); }}Požadavky na testování
Sekce “Požadavky na testování”Unit Tests
Sekce “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); }}Probíhající testy
Sekce “Probíhající testy”# Run all testsvendor/bin/phpunit
# Run specific test filevendor/bin/phpunit tests/Feature/DatabaseConnectionTest.php
# Run with coveragevendor/bin/phpunit --coverage-html coverage/Práce s pobočkami
Sekce “Práce s pobočkami”Udržujte větev aktualizovanou
Sekce “Udržujte větev aktualizovanou”# 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-connectionVytvoření požadavku na stažení
Sekce “Vytvoření požadavku na stažení”Formát názvu PR
Sekce “Formát názvu PR”[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 classProces kontroly kódu
Sekce “Proces kontroly kódu”Co recenzenti hledají
Sekce “Co recenzenti hledají”-
Správnost
- Řeší kód uvedený problém?
- Jsou řešeny okrajové případy?
- Je správné řešení chyb?
-
Kvalita
- Dodržuje kódovací standardy?
- Dá se to udržovat?
- Je to dobře otestované?
-
Výkon
- Nějaké regrese výkonu?
- Jsou dotazy optimalizovány?
- Je využití paměti rozumné?
-
Zabezpečení
- Ověření vstupu?
- Prevence vstřikování SQL?
- Authentication/authorization?
Reakce na zpětnou vazbu
Sekce “Reakce na zpětnou vazbu”# 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-connectionBěžné PR problémy a řešení
Sekce “Běžné PR problémy a řešení”Problém 1: PR je příliš velký
Sekce “Problém 1: PR je příliš velký”Problém: Recenzenti nemohou efektivně revidovat masivní PR
Řešení: Rozdělte se na menší PR
- První PR: Základní změny
- Druhý PR: Testy
- Třetí PR: Dokumentace
Problém 2: Nejsou zahrnuty žádné testy
Sekce “Problém 2: Nejsou zahrnuty žádné testy”Problém: Recenzenti nemohou ověřit funkčnost
Řešení: Před odesláním přidejte komplexní testy
Problém 3: Konflikty s Main
Sekce “Problém 3: Konflikty s Main”Problém: Vaše větev není synchronizovaná s main
Řešení: Rebase na nejnovější hlavní
git fetch upstreamgit rebase upstream/maingit push -f origin your-branchPo sloučení
Sekce “Po sloučení”Úklid
Sekce “Úklid”# 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-connectionShrnutí osvědčených postupů
Sekce “Shrnutí osvědčených postupů”Dělejte
Sekce “Dělejte”- Vytvářejte popisné zprávy o odevzdání
- Vytvářejte cílená, jednoúčelová PR
- Zahrnout testy pro nové funkce
- Aktualizace dokumentace
- Reference související problémy
- Udržujte jasné popisy PR
- Okamžitě reagujte na recenze
- Zahrnout nesouvisející změny
- Sloučit hlavní do své pobočky (použít rebase)
- Vynutit zatlačení po zahájení kontroly
- Přeskočit testy
- Odešlete nedokončenou práci
- Ignorujte zpětnou vazbu při kontrole kódu
Související dokumentace
Sekce “Související dokumentace”- ../Contributing - Přehled přispívajících
- Styl kódu - Pokyny pro styl kódu
- ../../03-Module-Development/Best-Practices/Testing - Testování osvědčených postupů
- ../Architecture-Decisions/ADR-Index - Architektonické směrnice
Zdroje
Sekce “Zdroje”Poslední aktualizace: 2026-01-31 Platí pro: Všechny projekty XOOPS Úložiště: https://github.com/XOOPS/XOOPS