Выполнить 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

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

14
задан Enigma
25.03.2023 8:02 Количество просмотров материала 2884
Распечатать страницу

2 ответа

попробуйте

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

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

5
отвечен mitch.tux 2023-03-26 15:50

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

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 2023-03-26 18:07

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх