Ejecute git pre-commit hook solo si se modifican los archivos en cierto directorio


11

Estoy tratando de crear una secuencia de comandos bash para un gancho de confirmación previa de git. Cada vez que se realiza una confirmación, quiero verificar si los archivos en un determinado directorio son parte de los archivos organizados y, de ser así, ejecutar un comando (tarea Grunt). Hasta ahora tengo todo funcionando, excepto que solo se ejecuta si se modifican ciertos archivos. Estoy tratando de hacer que esto funcione:

SRC_PATTERN="site/assets/js/"
if [ grep --quiet $SRC_PATTERN `git diff --cached --name-only` ]
then
  echo "none"
  exit 0
fi

Esto desafortunadamente me está dando errores.

Respuestas:


9

tratar,

git diff --cached --name-only | if grep --quiet "$SRC_PATTERN"
then
    ...

Feliz piratería


8

Pruébalo así:

SRC_PATTERN="site/assets/js/"
if git diff --cached --name-only | grep --quiet "$SRC_PATTERN"
then
  echo "none"
  exit 0
fi

Esto se parece mucho a la respuesta aceptada, pero esa está equivocada. En bash / sh cada comando en una tubería se ejecuta en una subshell separada, por lo que una salida en la parte entonces solo saldrá de la subshell, ¡cualquier código que siga al fi aún se ejecutará!

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.