Я написал 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.