Wykonaj przechylenie wstępne git tylko wtedy, gdy pliki w określonym katalogu zostały zmodyfikowane

11

Próbuję utworzyć skrypt bash dla haka wstępnego zatwierdzenia git. Za każdym razem, gdy dokonywane jest zatwierdzenie, chcę sprawdzić, czy pliki w określonym katalogu są częścią plików pomostowych, a jeśli tak, uruchom polecenie (zadanie Grunt). Do tej pory mam wszystko działające, z wyjątkiem uruchamiania tylko, jeśli niektóre pliki są zmodyfikowane. Staram się, aby to zadziałało:

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

To niestety daje mi błędy.

Dachande663
źródło

Odpowiedzi:

9

próbować,

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

Miłego hakowania

mitch.tux
źródło
8

Spróbuj tak:

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

Wygląda to podobnie do przyjętej odpowiedzi, ale ta jest błędna. W bash / sh każde polecenie w potoku jest wykonywane w osobnej podpowłoce, więc wyjście w części wtedy opuści tylko podpowłokę, każdy kod następujący po fi będzie nadal wykonywany!

SimonO
źródło