Применение 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