Git управление крючками

В нашем проекте мы используем специально написанные крючки Git.

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

Один из способов улучшить это - сделать .git/перехватить символическую ссылку в worktree. Но это будет означать, что каждая ветвь (даже ветки пользовательских локальных функций в стадии разработки) должна иметь самую последнюю версию перехватчиков. Это также не удобно.

Как бы вы решили проблему?

Ответ 1

Поддерживайте отдельный репозиторий ваших крючков и символических ссылок.

Я согласен, было бы неплохо, если бы Git имел встроенный механизм для распространения скриптов hooks, но это не так.

Ответ 3

Вы можете создать каталог репозитория .git a git репозиторий и просто добавить в него крючки и другую конфигурацию, добавив каталоги objects, refs и т.д. и файлы, такие как index, в его .gitignore. Не только это, но вы можете настроить крюк post-receive для обновления метарепо от его происхождения. После того, как вы настроили начальную конфигурацию, вы можете получить обновления без каких-либо дополнительных усилий.

Я разбираюсь в деталях этого, как то, что должно идти в списке игнорирования; Я сохраняю результаты в ветвях это репо.

Ответ 4

В Git 2.9 вы можете указать каталог пользовательских крючков, используя конфигурацию core.hooksPath.

Git 2.9 Примечания к выпуску - https://github.com/blog/2188-git-2-9-has-been-released

Документация, в которой упоминается core.hooksPath - https://git-scm.com/docs/githooks

Примечание. Этот вопрос является возможным дубликатом Может ли Git управлять сценариями крюка вместе с репозиторием?

Ответ 5

Для проектов на основе NodeJS я предлагаю вам взглянуть на ghooks.

Ответ 6

Мы сделали .git/привязали символическую ссылку к рабочему дереву.

В тех редких случаях, когда кому-то нужно зафиксировать файлы, которые будут отклонять крючки, мы используем git commit --no-verify