Eseguire l'hook di pre-commit git solo se i file in determinate directory sono stati modificati


11

Sto cercando di creare uno script bash per un hook pre-commit git. Ogni volta che viene eseguito un commit, voglio verificare se i file in una determinata directory fanno parte dei file organizzati e, in tal caso, eseguire un comando (attività Grunt). Finora ho tutto funzionante, tranne che per l'esecuzione solo se alcuni file vengono modificati. Sto cercando di farlo funzionare:

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

Questo purtroppo mi dà errori.

Risposte:


9

provare,

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

Happy hacking


8

Provalo in questo modo:

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

Assomiglia molto alla risposta accettata, ma quella sbagliata. In bash / sh ogni comando in una pipeline viene eseguito in una subshell separata, quindi un'uscita nella parte allora uscirà solo dalla subshell, qualsiasi codice che segue fi sarà comunque eseguito!

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.