Ein etwas übersichtlicherer Weg, um dieselbe Liste zu erhalten, ist:
git diff --cached --name-only --diff-filter=ACM
Dies gibt die Liste der Dateien zurück, die überprüft werden müssen.
Es ist jedoch php -l
möglicherweise nicht richtig, nur Ihre Arbeitskopie zu verwenden. Wenn Sie ein partielles Commit durchführen, dh nur eine Teilmenge der Unterschiede zwischen Ihrem aktuellen Arbeitssatz und dem HEAD für das Commit auswählen, wird der Test für Ihren Arbeitssatz ausgeführt, es wird jedoch ein Commit zertifiziert, das auf Ihrem Commit noch nie vorhanden war Scheibe.
Um es richtig zu machen, sollten Sie das gesamte inszenierte Bild in einen temporären Bereich extrahieren und dort den Test durchführen.
rm -rf $TEMPDIR
mkdir -p $TEMPDIR
git checkout-index --prefix=$TEMPDIR/ -af
git diff --cached --name-only --diff-filter=ACM | xargs -n 1 -I '{}' \bin\echo TEMPDIR/'{}' | grep \\.php | xargs -n 1 php -l
Siehe Erstellen eines besseren Pre-Commit-Hooks für Git weitere Implementierung finden .