Executar gancho de pré-confirmação do git apenas se os arquivos em determinado diretório forem modificados

11

Estou tentando criar um script bash para um gancho de pré-confirmação do git. Sempre que uma confirmação é feita, desejo verificar se os arquivos em um determinado diretório fazem parte dos arquivos temporários e, se sim, executar um comando (tarefa Grunt). Até agora, tenho tudo funcionando, exceto executando apenas se determinados arquivos forem modificados. Estou tentando fazer isso funcionar:

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

Infelizmente, isso está me dando erros.

Dachande663
fonte

Respostas:

9

tentar,

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

Happy hacking

mitch.tux
fonte
8

Tente assim:

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

Isso se parece muito com a resposta aceita, mas essa está errada. No bash / sh, cada comando em um pipeline é executado em um subshell separado; portanto, uma saída na parte then apenas sai do subshell, qualquer código que segue o fi ainda será executado!

SimonO
fonte