Pracovní postup příspěvků
Tato příručka vás provede celým procesem přispívání do XOOPS, od počátečního nastavení až po žádost o sloučenou aktualizaci.
Předpoklady
Sekce “Předpoklady”Než začnete přispívat, ujistěte se, že máte:
- Git nainstalován a nakonfigurován
- Účet GitHub (zdarma)
- PHP 7.4+ pro vývoj XOOPS
- Composer pro správu závislostí
- Základní znalost pracovních postupů Git
- Znalost kodexu chování
Krok 1: Fork the Repository
Sekce “Krok 1: Fork the Repository”Na webovém rozhraní GitHub
Sekce “Na webovém rozhraní GitHub”- Přejděte do úložiště (např.
XOOPS/XOOPSCore27) - Klikněte na tlačítko Fork v pravém horním rohu
- Vyberte, kde se má větvit (váš osobní účet)
- Počkejte, až se vidlice dokončí
Proč Fork?
Sekce “Proč Fork?”- Získáte svou vlastní kopii, na které můžete pracovat
- Správci nemusí spravovat mnoho poboček
- Máte plnou kontrolu nad svou vidlicí
- Požadavky na stažení odkazují na vaši vidlici a upstream repo
Krok 2: Lokálně naklonujte vidlici
Sekce “Krok 2: Lokálně naklonujte vidlici”# 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)Krok 3: Nastavení vývojového prostředí
Sekce “Krok 3: Nastavení vývojového prostředí”Instalovat závislosti
Sekce “Instalovat závislosti”# Install Composer dependenciescomposer install
# Install development dependenciescomposer install --dev
# For module developmentcd modules/mymodulecomposer installNakonfigurujte Git
Sekce “Nakonfigurujte Git”# 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"Spusťte testy
Sekce “Spusťte testy”# Make sure tests pass in clean state./vendor/bin/phpunit
# Run specific test suite./vendor/bin/phpunit --testsuite unitKrok 4: Vytvořte větev funkcí
Sekce “Krok 4: Vytvořte větev funkcí”Konvence pojmenování poboček
Sekce “Konvence pojmenování poboček”Postupujte podle tohoto vzoru: <type>/<description>
Typy:
feature/- Nová funkcefix/- Oprava chybydocs/- Pouze dokumentacerefactor/- Refaktorování kódutest/- Testovací doplňkychore/- Údržba, nářadí
Příklady:
# 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/mainUdržujte pobočku aktuální
Sekce “Udržujte pobočku aktuální”# Before you start work, sync with upstreamgit fetch upstreamgit merge upstream/main
# Later, if upstream has changedgit fetch upstreamgit rebase upstream/mainKrok 5: Proveďte změny
Sekce “Krok 5: Proveďte změny”Vývojové postupy
Sekce “Vývojové postupy”- Napište kód podle standardů PHP
- Napište testy pro nové funkce
- V případě potřeby Aktualizujte dokumentaci
- Spusťte linters a formátovače kódu
Kontroly kvality kódu
Sekce “Kontroly kvality kódu”# 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/Proveďte dobré změny
Sekce “Proveďte dobré změny”# 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"Krok 6: Udržujte větev v synchronizaci
Sekce “Krok 6: Udržujte větev v synchronizaci”Při práci na vaší funkci může hlavní větev pokročit:
# 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 --continueKrok 7: Zatlačte na vidličku
Sekce “Krok 7: Zatlačte na vidličku”# 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-featureKrok 8: Vytvořte požadavek na stažení
Sekce “Krok 8: Vytvořte požadavek na stažení”Na webovém rozhraní GitHub
Sekce “Na webovém rozhraní GitHub”- Přejděte na svou vidlici na GitHub
- Zobrazí se upozornění na vytvoření PR z vaší pobočky
- Klikněte na “Porovnat a stáhnout požadavek”
- Nebo ručně klikněte na “New pull request” a vyberte svou pobočku
Název a popis PR
Sekce “Název a popis PR”Formát titulu:
<type>(<scope>): <subject>Příklady:
feat(auth): add two-factor authenticationfix(forms): prevent XSS in text inputdocs: update installation guiderefactor(core): improve performanceŠablona popisu:
## DescriptionBrief explanation of what this PR does.
## Changes- Changed X from A to B- Added feature Y- Fixed bug Z
## Type of Change- [ ] New feature (adds new functionality)- [ ] Bug fix (fixes an issue)- [ ] Breaking change (API/behavior change)- [ ] Documentation update
## Testing- [ ] Added tests for new functionality- [ ] All existing tests pass- [ ] Manual testing performed
## Screenshots (if applicable)Include before/after screenshots for UI changes.
## Related IssuesCloses #123Related to #456
## Checklist- [ ] Code follows style guidelines- [ ] Self-reviewed own code- [ ] Commented complex code- [ ] Updated documentation- [ ] No new warnings generated- [ ] Tests pass locallyKontrolní seznam kontroly PR
Sekce “Kontrolní seznam kontroly PR”Před odesláním se ujistěte:
- Kód se řídí standardy PHP
- Testy jsou zahrnuty a vyhovují
- Aktualizace dokumentace (v případě potřeby)
- Žádné konflikty při sloučení
- Závazné zprávy jsou jasné
- Odkazuje se na související problémy
- Popis PR je podrobný
- Žádný ladicí kód nebo protokoly konzoly
Krok 9: Odpovězte na zpětnou vazbu
Sekce “Krok 9: Odpovězte na zpětnou vazbu”Během kontroly kódu
Sekce “Během kontroly kódu”- Pozorně si přečtěte komentáře – Pochopte zpětnou vazbu
- Ptejte se – Pokud vám to není jasné, požádejte o vysvětlení
- Diskutujte o alternativách – Uctivě debatujte o přístupech
- Proveďte požadované změny - Aktualizujte svou pobočku
- Vynutit-push aktualizované commity - Při přepisování historie
# 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-featureOčekávejte opakování
Sekce “Očekávejte opakování”- Většina PR vyžaduje více kol přezkumu
- Buďte trpěliví a konstruktivní
- Zpětnou vazbu vnímat jako příležitost k učení
- Správci mohou navrhnout refaktory
Krok 10: Sloučení a vyčištění
Sekce “Krok 10: Sloučení a vyčištění”Po schválení
Sekce “Po schválení”Jakmile správci schválí a sloučí:
- Automatické sloučení GitHub nebo sloučení kliknutí správce
- Vaše pobočka je smazána (obvykle automaticky)
- Změny jsou v upstreamu
Místní čištění
Sekce “Místní čištění”# 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-featureDiagram pracovního postupu
Sekce “Diagram pracovního postupu”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]Běžné scénáře
Sekce “Běžné scénáře”Synchronizace před spuštěním
Sekce “Synchronizace před spuštěním”# Always start freshgit fetch upstreamgit checkout -b feature/new-thing upstream/mainPřidávání dalších závazků
Sekce “Přidávání dalších závazků”# Just push againgit add .git commit -m "feat: additional changes"git push origin feature/new-thingOprava chyb
Sekce “Oprava chyb”# 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 changesŘešení konfliktů při sloučení
Sekce “Řešení konfliktů při sloučení”# Rebase and resolve conflictsgit fetch upstreamgit rebase upstream/main
# Edit conflicted files to resolve# Then continuegit add .git rebase --continuegit push --force-with-leaseNejlepší postupy
Sekce “Nejlepší postupy”Dělejte
Sekce “Dělejte”- Udržujte pobočky zaměřené na jednotlivé problémy
- Dělejte malé, logické závazky
- Napište popisné zprávy o odevzdání
- Aktualizujte svou pobočku často
- Před zatlačením otestujte
- Změny dokumentů
- Reagujte na zpětnou vazbu
Ne- Pracujte přímo na větvi main/master
Sekce “Ne- Pracujte přímo na větvi main/master”- Smíchejte nesouvisející změny v jednom PR
- Potvrdit vygenerované soubory nebo node_modules
- Vynutit push po zveřejnění PR (použijte —force-with-lease)
- Ignorujte zpětnou vazbu při kontrole kódu
- Vytvářejte obrovské PR (rozdělte se na menší)
- Zadávejte citlivá data (klíče API, hesla)
Tipy pro úspěch
Sekce “Tipy pro úspěch”Komunikujte
Sekce “Komunikujte”- Před zahájením práce se ptejte na otázky
- Požádejte o radu ohledně komplexních změn
- Diskutujte o přístupu v popisu PR
- Rychle reagovat na zpětnou vazbu
Dodržujte standardy
Sekce “Dodržujte standardy”- Projděte si normy PHP
- Zkontrolujte pokyny pro hlášení problémů
- Přečtěte si Přehled přispívání
- Postupujte podle pokynů k žádosti o vytažení
Naučte se Codebase
Sekce “Naučte se Codebase”- Přečtěte si existující vzory kódu
- Studujte podobné implementace
- Pochopit architekturu
- Zkontrolujte základní koncepty
Související dokumentace
Sekce “Související dokumentace”- Kodex chování
- Vytáhněte pokyny k žádosti
- Hlášení problémů
- Standardy kódování PHP
- Přispívající přehled
#xoops #git #github #contributing #workflow #pull-request