Применение git post-commit hook ко всем текущим и будущим репозиториям - PullRequest
252 голосов
/ 19 февраля 2010

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

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

Ответы [ 4 ]

282 голосов
/ 13 января 2012

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

154 голосов
/ 18 мая 2016

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

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

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

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

69 голосов
/ 19 февраля 2010

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

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

6 голосов
/ 02 июня 2012

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

...