Git-Hooks (Husky)
Dieses Repository nutzt Husky, um Git-Hooks aus dem Root-Verzeichnis .husky/ auszuführen. Die Hooks laufen automatisch beim Commit und halten Commit-Messages, Doku-Formatierung und Java-Code-Stil konsistent.
Die Skripte liegen in .husky/ (pre-commit, commit-msg).
Einrichtung
Hooks werden eingerichtet, wenn im Repository-Root ausgeführt wird:
npm installDas prepare-Skript läuft automatisch und zeigt Git auf .husky/.
Für Doku-Arbeit einmalig die Docs-Abhängigkeiten installieren:
cd docs && npm installHooks
pre-commit
Leerer Platzhalter. Git führt immer zuerst pre-commit, dann commit-msg aus; die Prüfungen liegen in commit-msg, damit die Commit-Message zuerst validiert wird.
commit-msg
Alle Prüfungen laufen in diesem Hook, in Fail-Fast-Reihenfolge:
- Commit-Message — Subject-Zeile aus der Message-Datei, die Git an diesen Hook übergibt
- Doku-Formatierung — Prettier-Check in
docs/, wenn gestagte Dateien unterdocs/liegen (npm run format:check) - Java-Code-Stil — Spotless-Check über Maven, wenn gestagte
*.java-Dateien vorhanden sind
Verhalten
- Commit-Message und Doku-Checks blockieren den Commit bei Fehlern
- Spotless läuft nur bei gestagten Java-Dateien; wenn Maven lokal nicht installiert ist, wird Spotless mit einer Warnung übersprungen
Commit-Message-Format (Schritt 1):
type(PROJECT-123): commit message
type(PROJECT): commit messageDie Ticket-Nummer ist optional — CAPTCHA-123 oder nur CAPTCHA (Großbuchstaben).
Gültige Types: feat, fix, clean, chore, docs
Gültige Projekte: CAPTCHA, GH
Merge-Commits
Gits Standard-Merge-Subjects (z. B. Merge branch 'main' into feature-branch) werden automatisch akzeptiert, damit git merge ohne Umbenennung der Message abgeschlossen werden kann.
Fehlerbehebung
Doku-Formatierung schlägt fehl
cd docs
npm run formatSpotless schlägt fehl
mvn -f captchaservice-backend/pom.xml spotless:applyHooks vorübergehend überspringen
git commit --no-verify -m "chore(CAPTCHA): emergency hotfix"Sparsam nutzen — CI erzwingt dieselben Checks.