Применение привязки git post-commit ко всем текущим и будущим репозиториям

Я написал Git post-commit hook, и он работает правильно. Тем не менее, я хочу добавить этот крюк для применения ко всем текущим (и будущим) хранилищам Git, над которыми я работаю. Я попытался добавить hook к моему ~/.git/hooks/, а не в каталог hooks в каталоге проекта, однако это, похоже, не сработало.

Есть ли способ создать глобальные крючки Git, которые будут применяться ко всем хранилищам в моей системе (без необходимости копировать их в каждый каталог проекта)? Если нет, то каково было бы лучшее решение в будущем - возможно, шаблон git -init?

Ответ 1

Я хочу добавить этот хук для применения ко всем текущим (и будущим) репозиториям git, над которыми я работаю

С git 2.9+ (июнь 2016) все, что вы сделали бы:

git config --global core.hooksPath /path/to/my/centralized/hooks

См. "изменить по умолчанию git hooks": это было сделано для управления централизованными перехватами.

Ответ 2

Как и в случае с git 1.7.1, вы можете установить init.templatedir в свой gitconfig, чтобы сообщить git, где искать шаблоны.

Установите его так:

git config --global init.templatedir '~/.git_template'

После этого новые репозитории, созданные или клонированные, будут использовать этот каталог для шаблонов. Поместите нужные крючки в ~/.git_template/hooks. Существующие репозитории можно повторно инициализировать с помощью правильных шаблонов, запустив git init в том же каталоге .git.

Для git версий старше 1.7.1 запуск git init --template ~/.git_template будет работать, если вы похожи на меня, и по-прежнему хотите управлять вашим каталогом .git_template вместе с остальными вашими точечными файлами. Вы также можете использовать среду $GIT_TEMPLATE_DIR, чтобы сообщить git init, где находится ваш каталог шаблонов.

Ответ 3

Если вы хотите, чтобы они были повсюду в вашей системе (включая пользователей помимо вас), вы можете изменить содержимое установленной директории шаблонов - те, которые находятся в $PREFIX/share/git-core/templates/hooks, где $PREFIX, вероятно, /usr/local или /usr.

Если вы хотите, чтобы это было просто для вас, то да, самым простым может быть опция --template для git -init. Вы можете легко сохранить личный каталог шаблонов, в котором есть символические ссылки на установленную версию по умолчанию, которую вы хотите сохранить (отдельные крючки, каталог информации...), а затем ваш собственный контент в hooks/post-commit и все, что вы хотите настроить.

Ответ 4

Минималистский подход заключается в создании каталога git_hooks/ в вашем репозитории для отслеживания перехватов, которые вы пишете для этого проекта, довести его до сведения будущих пользователей, указав его в README и полагаться на них поступайте правильно, после того, как они клонированы. Я размышлял об этом некоторое время и выбрал постепенный подход. В будущем я мог бы использовать инструмент, например git-hooks.