Я написал Git post-commit hook, и он работает правильно. Однако я хочу добавить этот хук для применения ко всем текущим (и будущим) репозиториям git, над которыми я работаю. Я попытался добавить хук к моему, ~/.git/hooks/
а не в каталог хуков в каталоге проекта, однако, это, похоже, не сработало.
Есть ли способ создать глобальные хиты Git, которые будут применяться ко всем репозиториям в моей системе (без необходимости копировать их в каждый каталог проекта)? Если нет, то какое будет лучшее решение в будущем - возможно, шаблон git-init?
Ответы:
В git 2.9+ (июнь 2016 г.) все, что вам нужно сделать, это:
См. « Изменение стандартных git-хуков »: это было сделано для управления централизованными хуками.
источник
/.git/hooks/pre_commit
я могу указать на это?Начиная с git 1.7.1, вы можете установить init.templatedir в вашем gitconfig, чтобы указать git, где искать шаблоны.
Установите это так:
После этого новые репозитории, которые вы создаете или клонируете, будут использовать этот каталог для шаблонов. Поместите крючки, в которых вы хотите
~/.git_template/hooks
. Существующие репозитории можно переинициализировать с помощью соответствующих шаблонов, запустив ихgit init
в том же каталоге.git
.Для версий git старше 1.7.1 запуск
git init --template ~/.git_template
будет работать, если вы похожи на меня и по-прежнему хотите управлять своим.git_template
каталогом вместе с остальными файлами точек. Вы также можете использовать эту$GIT_TEMPLATE_DIR
среду, чтобы указать,git init
где находится каталог вашего шаблона.источник
git init
стирает ли его повторный запуск на существующем репо - нет , см .: stackoverflow.com/questions/5149694/…git init
фактически не обновляет крючки для меня. Кажется, он не будет перезаписывать файлы, которые уже есть. stackoverflow.com/questions/10791486/ . Вместо этого вам нужно сначала удалить старые файлы ловушек.Если вы хотите, чтобы они были везде в вашей системе (включая пользователей кроме вас), вы можете изменить содержимое установленного каталога шаблонов - те, которые находятся там
$PREFIX/share/git-core/templates/hooks
, где$PREFIX
, вероятно,/usr/local
или/usr
.Если вы хотите, чтобы это было для вас, то да, самая простая вещь - это
--template
опция git-init. Вы можете легко сохранить личный каталог шаблонов, в котором есть символические ссылки, на установленную версию значений по умолчанию, которые вы хотите сохранить (отдельные хуки, информационный каталог ...), а затем свой собственный контентhooks/post-commit
и все остальное, что вы хотите настроить.источник
git init
снова, и это добавило мой новый хук./Applications/SourceTree.app/Contents/Resources/git_local/share/git-core/templates/hooks
mingw64\share\templates\hooks
(или mingw32 для 32-битнойmingw64\share\git-core\templates\hooks
(gfw 2.25)Минимальный подход заключается в создании
git_hooks/
каталога в вашем хранилище для отслеживания хуков, которые вы пишете для этого проекта, доведения его до сведения будущих пользователей, упоминая об этом в aREADME
, и полагаясь на них, чтобы они поступали правильно после клонирования. Некоторое время я размышлял над этим и выбрал постепенный подход. В будущем я мог бы рассмотреть возможность использования такого инструмента, как git-hooks .источник