Execute o git pre-commit hook apenas se os arquivos em algum diretório forem modificados

7

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.

    
por Dachande663 15.02.2013 / 17:38

2 respostas

5

tente,

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

Hacker feliz

    
por 16.02.2013 / 00:35
4

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!

    
por 03.06.2016 / 17:05

Tags