Выполнить git pre-commit Хук только если файлы в определенном каталоге изменены

Я пытаюсь создать скрипт bash для Хука предварительной фиксации git. Всякий раз, когда выполняется фиксация, я хочу проверить, являются ли файлы в определенном каталоге частью промежуточных файлов, и если да, выполните команду (задача Grunt). До сих пор у меня все работает, за исключением только запуска, если некоторые файлы изменены. Я пытаюсь заставить это работать:

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

это, к сожалению, дает мне ошибки.

5
задан Enigma
источник

2 ответов

попробуйте

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

всего доброго

5
отвечен mitch.tux 2013-02-15 23:35:16
источник

попробуйте так:

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

это очень похоже на принятый ответ, но этот неправильный. В bash/SH, если каждая команда в конвейере выполняется как отдельный подуровень, поэтому выход в часть только выход в подуровень, любой код, который следует за интернет все равно будет выполнена!

4
отвечен SimonO 2016-06-03 15:05:41
источник

Другие вопросы bash git