Extrahiert die Pre-Commit-Checks (lint-staged + PHPUnit) in ein
gemeinsames Script, das sowohl vom Husky-Hook (.husky/pre-commit)
als auch von scripts/safe-commit.sh aufgerufen wird.
Logik:
- lint-staged laeuft immer (HTML/CSS/JS/JSON/MD/PHP-Syntax)
- PHPUnit laeuft nur, wenn PHP-relevante Dateien gestaged sind
(*.php, phpunit.xml, composer.json, composer.lock)
- Safety-Check: alle gestaged PHP-Dateien muessen auf Disk existieren
- Bei Test-Fehler wird der Commit mit Exit-Code != 0 abgebrochen
- Composer-Deps werden nur bei Bedarf installiert (Cache-Hit)
Erweitert den Husky pre-commit-Hook um einen PHPUnit-Schritt.
Ausserdem wird scripts/safe-commit.sh aktualisiert, damit das
Safety-Net dieselbe Logik wie der Hook verwendet (kein doppelter Code).
Vorher: Hook rief nur 'npx lint-staged' auf.
Nachher: Hook ruft scripts/pre-commit-checks.sh auf, das
- lint-staged ausfuehrt (unveraendert)
- PHPUnit nur dann ausfuehrt, wenn PHP-relevante Dateien
gestaged sind (Performance-Optimierung: Issue #67 Anforderung)
- Bei Test-Fehler den Commit mit Exit-Code 1 abbricht
Closes#67
mapfile + array prevents word-splitting issues with filenames
containing spaces or other shell-special characters. Affects both
the affected-files listing and the stale-index safety check.
Without this fix, a filename like 'My Module.php' would be split
into 'My' and 'Module.php', causing the disk-existence check to
look for wrong paths.
greggy
merged commit b5073fd892 into main2026-06-04 02:41:15 +02:00
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Closes #67
Was
Der Pre-Commit-Hook (
husky) ruft jetzt PHPUnit, bevor ein Commit landet. PHPUnit läuft nur, wenn PHP-relevante Dateien gestaged sind (Performance!).Architektur
scripts/pre-commit-checks.sh(NEU, 77 Zeilen) — Zentrale Logikcomposer install(lazy, nur wennvendor/fehlt).husky/pre-commit(MODIFIZIERT, 3 Zeilen) — Delegiert anpre-commit-checks.shscripts/safe-commit.sh(MODIFIZIERT) — Nutzt gleiche Logik als Safety-Net (DRY)Trigger-Filter (Performance-Optimum)
*.php,phpunit.xml,composer.json,composer.lockCommits
85cf4f3chore(hooks): add shared pre-commit-checks scriptb0f769dfeat(hooks): run PHPUnit in pre-commit hook (#67)3f1f0f5fix(hooks): use array-based file iteration for safety checkVerifizierte Szenarien (4/4 ✅)
Hinweise
git commit --no-verifymöglich (z.B. für triviale Doku-Commits)Erweitert den Husky pre-commit-Hook um einen PHPUnit-Schritt. Ausserdem wird scripts/safe-commit.sh aktualisiert, damit das Safety-Net dieselbe Logik wie der Hook verwendet (kein doppelter Code). Vorher: Hook rief nur 'npx lint-staged' auf. Nachher: Hook ruft scripts/pre-commit-checks.sh auf, das - lint-staged ausfuehrt (unveraendert) - PHPUnit nur dann ausfuehrt, wenn PHP-relevante Dateien gestaged sind (Performance-Optimierung: Issue #67 Anforderung) - Bei Test-Fehler den Commit mit Exit-Code 1 abbricht Closes #67