tente,
git diff --cached --name-only | if grep --quiet "$SRC_PATTERN"
then
...
Hacker feliz
Eu estou tentando criar um script bash para um gancho de pré-commit do git. Sempre que uma confirmação é feita, quero verificar se os arquivos em um determinado diretório fazem parte dos arquivos testados e, em caso afirmativo, execute um comando (tarefa Grunt). Até agora eu tenho tudo funcionando, exceto por rodar apenas se certos 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
Isso infelizmente está me dando erros.
Experimente assim:
SRC_PATTERN="site/assets/js/"
if git diff --cached --name-only | grep --quiet "$SRC_PATTERN"
then
echo "none"
exit 0
fi
Isso 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 então só sairá do subshell, qualquer código que segue o fi ainda será executado!