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

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

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

5 ответов

Решение

Я хочу добавить этот хук для применения ко всем текущим (и будущим) репозиториям 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 вместе с остальными вашими точечными файлами. Вы также можете использовать $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.

Дополнительные советы Предотвращение нежелательных коммитов

      https://gist.github.com/tiagofrancafernandes/4bbaa3a2dd4faf0c681db864bfff49cc
Другие вопросы по тегам