- Updated Dockerfile.production - Updated Makefile - Updated deployment documentation - Updated docker/ci/Dockerfile, docker/php/Dockerfile, docker/worker/Dockerfile - Updated dependency scanning documentation - Added git-hooks documentation
3.6 KiB
Git Hooks
Dieses Projekt verwendet Git Hooks, um Code-Quality und Commit-Standards automatisch zu ?berpr?fen.
Aktivierte Hooks
Pre-commit Hook
Zweck: Schnelle Checks vor jedem Commit
Pr?ft:
- ? PHP Code Style (PHP-CS-Fixer) f?r ge?nderte PHP-Dateien
- ? JavaScript/TypeScript Linting (ESLint) f?r ge?nderte JS/TS-Dateien
- ? Merge-Konflikt-Marker in staged Dateien
?berspringen: git commit --no-verify
Beispiel-Fehler:
? Code style issues found in src/MyClass.php
?? Run: make cs-fix
Commit-msg Hook
Zweck: Validierung der Commit-Message nach Conventional Commits
Format: type(scope): subject
Erlaubte Types:
feat: Neue Featuresfix: Bugfixesdocs: Dokumentationstyle: Code-Formatierung (ohne Funktions?nderung)refactor: Code-Refactoringperf: Performance-Verbesserungentest: Tests hinzuf?gen/?ndernbuild: Build-System/Abh?ngigkeitenci: CI/CD Konfigurationchore: Sonstige ?nderungenrevert: Revert eines Commits
Beispiele:
feat: Add user authentication
fix(api): Resolve 502 error in staging
docs: Update README
refactor(framework): Improve DI container
?berspringen: git commit --no-verify
Pre-push Hook
Zweck: Langsamere Checks vor dem Push
Pr?ft:
- ? PHPStan Static Analysis
- ? Unit Tests (schneller Teil der Test-Suite)
Hinweis: Dieser Hook kann etwas l?nger dauern. Er fragt bei Fehlern, ob trotzdem gepusht werden soll.
?berspringen: git push --no-verify
Hook deaktivieren
Einzelnen Commit ?berspringen
git commit --no-verify
Einzelnen Push ?berspringen
git push --no-verify
Hooks komplett deaktivieren
# Tempor?r alle Hooks deaktivieren
git config core.hooksPath /dev/null
# Wieder aktivieren
git config --unset core.hooksPath
Hook manuell testen
# Pre-commit Hook testen
.git/hooks/pre-commit
# Commit-msg Hook testen
echo "test: Test message" | .git/hooks/commit-msg /dev/stdin
# Pre-push Hook testen
.git/hooks/pre-push
Hook anpassen
Die Hook-Dateien befinden sich in .git/hooks/:
.git/hooks/pre-commit- Pre-commit Checks.git/hooks/commit-msg- Commit-Message Validierung.git/hooks/pre-push- Pre-push Checks
Wichtig: Hook-Dateien werden nicht ins Repository committed (sie sind in .git/hooks/, nicht im Working Directory).
Um Hooks f?r das gesamte Team zu teilen, gibt es mehrere M?glichkeiten:
- Husky (npm package) - f?r Node.js-Projekte
- CaptainHook (PHP package) - f?r PHP-Projekte
- Manuelles Setup-Skript
Best Practices
-
Pre-commit: Schnelle Checks (< 5 Sekunden)
- Code Style
- Syntax-Checks
- Merge-Konflikt-Detection
-
Pre-push: Langsamere Checks (< 2 Minuten)
- Static Analysis
- Unit Tests
- Integration Tests (optional)
-
CI/CD: Umfassende Checks
- Alle Tests
- Coverage Reports
- Security Scans
Troubleshooting
Hook wird nicht ausgef?hrt
# Pr?fe Berechtigungen
ls -la .git/hooks/
# Mache Hook ausf?hrbar
chmod +x .git/hooks/pre-commit
Hook ist zu langsam
- Verringere die Anzahl der Checks im pre-commit Hook
- Verschiebe langsamere Checks in den pre-push Hook
- Nutze
--no-verifyf?r schnelle WIP-Commits
Hook schl?gt im Docker fehl
Die Hooks pr?fen automatisch, ob sie in Docker laufen und passen die Befehle entsprechend an.
Weitere Hooks hinzuf?gen
Weitere n?tzliche Hooks:
post-merge: Automatischecomposer installnachgit pullpost-checkout: Automatische Dependency-Updatesprepare-commit-msg: Automatische Ticket-Nummern in Commit-Messages