Виконуйте гак перед введенням git, лише якщо файли в певному каталозі змінені


11

Я намагаюся створити скрипт bash для гака, який попередньо здійснює. Щоразу, коли виконується фіксація, я хочу перевірити, чи є файли у певній папці частиною поетапних файлів, і якщо так, запустіть команду (завдання Grunt). Поки що у мене все працює, за винятком лише запуску, якщо певні файли змінені. Я намагаюся змусити це працювати:

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

Це, на жаль, дає мені помилки.

Відповіді:


9

спробуйте,

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

Щасливий злом


8

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

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

Це схоже на прийняту відповідь, але це неправильно. У bash / sh кожна команда в конвеєрі виконується в окремій підрозділі, тому вихід у тодішній частині вийде лише з нижньої оболонки, будь-який код, який слідує за fi, все одно буде виконуватися!

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.