Exécuter git pre-commit hook uniquement si les fichiers de certains répertoires sont modifiés


11

J'essaie de créer un script bash pour un hook de pré-validation git. Chaque fois qu'une validation est effectuée, je veux vérifier si les fichiers dans un certain répertoire font partie des fichiers intermédiaires et si oui, exécutez une commande (tâche Grunt). Jusqu'à présent, tout fonctionne, sauf pour ne fonctionner que si certains fichiers sont modifiés. J'essaie de faire fonctionner cela:

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

Cela me donne malheureusement des erreurs.

Réponses:


9

essayer,

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

Piratage heureux


8

Essayez-le comme ceci:

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

Cela ressemble beaucoup à la réponse acceptée, mais celle-ci est fausse. Dans bash / sh, chaque commande d'un pipeline est exécutée dans un sous-shell séparé, donc une sortie dans la partie then ne quittera que le sous-shell, tout code qui suit le fi sera toujours exécuté!

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.