Короче говоря, я создал тестовое репо на github, клонировал его локально на своей Linux-машине. Создал хук после фиксации со следующим содержимым:
#!/bin/bash
echo Test message
Добавил perms 777 для хука, изменил файл, и когда я выполнил фиксацию, я получил сообщение на консоли. Итак, хук после фиксации, похоже, работает. Теперь я переименовал ловушку с post-commit на post-receive, но после нажатия я не получаю сообщения. Я продолжаю совершать и нажимаю на master, и никаких сообщений не отображается. Хук такой же, имеет 777, имеет такое же содержимое, поэтому я не могу понять, почему после фиксации крючок работает, а в режиме пост-получения - нет. Я упускаю что-то очевидное?
Вам не хватает того факта, что хуки выполняются в локальном репо и не передаются между репозиториями. Так что post-receive
крючок, который у вас есть в вашем репо, запускается только тогда, когда ваш репо что-то получает, а не когда удаленное репо что-то получает.
В случае с Github, в частности, вы не можете настроить «традиционные» хуки, потому что Github не хочет зависать, выполняя произвольный код на своих серверах (сумасшедший, да?). Вместо этого они предоставляют "веб-крючки"которые запускают HTTP-запрос на указанный вами URL всякий раз, когда в противном случае запускается ловушка git.