Una forma un poco más ordenado de la obtención de la misma lista es:
git diff --cached --name-only --diff-filter=ACM
Esto devolverá la lista de archivos que necesitan ser comprobados.
Pero ejecutar php -l
en su copia de trabajo puede no ser lo correcto. Si está realizando una confirmación parcial, es decir, simplemente seleccionando un subconjunto de las diferencias entre su conjunto de trabajo actual y el HEAD para la confirmación, la prueba se ejecutará en su conjunto de trabajo, pero certificará una confirmación que nunca ha existido en su disco.
Para hacerlo bien, debe extraer toda la imagen por etapas a un área de temperatura y realizar la prueba allí.
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
Consulte Building a better pre-commit hook for Git para otra implementación.
http://phpadvent.org/2008/dont-commit-that-error-by-travis-swicegood – Maerlyn
Eso es bastante agradable. Sin embargo, no maneja archivos parcialmente en etapas. Vea mi comentario a la respuesta de @ LarryH. – igorw