Не запускается Hook после коммита
Проблема: Хук post-commit не работает после выполнения git-команды
У меня есть хук post-commit, который не срабатывает после выполнения команды git. Я проверил, что сам хук работает, если запустить его напрямую из терминала. Вот код, который содержится в хуке:
#!/bin/sh
#.git/hooks/post-commit
# Пример скрипта хука, который вызывается после успешного
# выполнения коммита.
#
# Чтобы активировать этот хук, переименуйте этот файл в "post-commit".
perl -pi -e 's/([a-f0-9]+)$/'$( git rev-parse HEAD )/ ../../config/commit.git
Я переименовал файл в post-commit в директории ./.git/hooks/
, и права на файл установлены как -rwxr-x-r-x
, поэтому я не понимаю, почему он не срабатывает. Что может быть причиной этой проблемы и как ее решить?
3 ответ(ов)
Оставлю это здесь как ответ, так как наткнулся на свое собственное решение, когда мой хук post-commit не запускался:
chmod +x .git/hooks/post-commit
Это, вероятно, касается любого типа хуков. На самом деле, это, вероятно, применимо ко всем скриптам.
Попробуйте добавить несколько строк echo
перед и после строки с Perl, как показано ниже:
echo "post-commit начат"
perl ...........
echo "post-commit завершен"
Таким образом, вы сможете подтвердить, что скрипт действительно выполняется, потому что при выполнении команды
git commit
вы должны увидеть в конце вашего вывода:
post-commit начат
post-commit завершен
В дополнение к приведенным здесь ответам, обратите внимание, что если вы ожидаете ввод пользователя в вашем хуке, вам необходимо перенаправить стандартный ввод на клавиатуру следующим образом (по крайней мере для bash-скрипта):
exec < /dev/tty
Как указать приватный SSH-ключ для выполнения команды shell в Git?
Посчитать количество строк в репозитории Git
Как добавить перенос строки в 'git commit -m' из командной строки?
Можно ли использовать pip для установки пакета из приватного репозитория GitHub?
Существует ли аналог 'git sed'?