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.

Respostas:


9

tentar,

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

Happy hacking


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!

Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.