Une façon d'obtenir un peu plus propre de la même liste est:
git diff --cached --name-only --diff-filter=ACM
Ceci renvoie la liste des fichiers qui doivent être vérifiés. Mais il n'est peut-être pas judicieux d'exécuter php -l
sur votre copie de travail. Si vous faites un commit partiel, c'est-à-dire que vous sélectionnez un sous-ensemble des différences entre votre jeu de travail actuel et le HEAD pour le commit, le test sera exécuté sur votre jeu de travail, mais certifiera un commit qui n'a jamais existé disque.
Pour le faire correctement, vous devez extraire toute l'image étagée dans une zone temp et y effectuer le test.
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
Voir Building a better pre-commit hook for Git pour une autre mise en œuvre.
http://phpadvent.org/2008/dont-commit-that-error-by-travis-swicegood – Maerlyn
C'est plutôt joli. Cependant, il ne gère pas les fichiers partiellement mis en scène. Voir mon commentaire à la réponse @ LarryH. – igorw