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


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

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

4 231

4 ответа:

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

С git 2.9+ (июнь 2016), все, что вам нужно сделать, это:

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

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

начиная с 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 dir вместе с остальными файлами dot. Вы также можете использовать $GIT_TEMPLATE_DIR среда, чтобы сказать git init где находится каталог шаблона.

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

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

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