Нажимаются ли хуки git на пульт, когда я нажимаю git push?

95

Если я создаю новый скрипт перехвата в моем локальном репозитории в репо / .git / hooks / post-commit, а затем запускаю «git push», будут ли перехваты отправлены на удаленный компьютер? Затем, когда другие разработчики запустят "git pull" из того же источника, получат ли они мои новые хуки?

Slacy
источник
3
Возможно, это поможет stackoverflow.com/questions/3462955/…
Рене Хёле
Связанный (с очень полезными ответами): Можно ли управлять сценариями перехвата Git вместе с репозиторием?
Marc.2377,

Ответы:

81

Нет. Хуки предназначены для каждого репозитория и никогда не передаются. Точно так же конфигурация репозитория не отправляется, ничего не .git/infoиспользуется или ряд других вещей.

При нажатии и извлечении происходит обмен только ветвями / тегами и объектами фиксации (и всем, что доступно из фиксации, например деревьями, каплями).

Лили Баллард
источник
14
Есть ли способ разместить крючки в центре и натянуть их на каждый клон и применить.
f1wade
4
@ f1wade Вы можете добавить .githooksкаталог, который будет контролироваться версиями, а затем либо создать символьную ссылку, либо создать сценарии ловушки оболочки изнутри .git. Клонирование не будет автоматически .githooksподключаться, но после подключения вы можете загружать и извлекать новые версии скриптов перехвата.
Филип Коулинг
47

Нет, хуки git не нажимаются и не вытягиваются, так как они не являются частью кода репозитория.

Пожалуйста, обратитесь к документации за списком простых клиентских и серверных хуков.

Если вы хотите включить некоторые хуки для всех клиентов, которые клонируют или извлекают из данного репозитория, вам нужно добавить хуки в свою кодовую базу, а затем создать свой собственный скрипт для их копирования или ссылки на них repo/.git/hooks/.

Марко Леогранде
источник
4
но как вызывается сценарий копирования?
Адам Джонс
6
@AdamJohns Он вызывается пользователем / разработчиком, вероятно, в форме, setup.shкоторую разработчик запускает при первом клонировании репозитория. После этого обновления перехватчиков могут происходить автоматически, например, с помощью перехватчика, который повторно запускает скрипт, обновляя их после каждого извлечения. Так что вам не нужно полагаться на разработчика, который сделает это сам.
cm92
4

К сожалению, нет, но с git 2.9 вы можете поместить их в папку .githooks (как упоминалось другими) и запустить:

git config --local core.hooksPath .githooks/

Таким образом, нет необходимости в символических ссылках или копировании файлов.

Марко Медрано
источник