Git глобальная настройка хуков - PullRequest
6 голосов
/ 13 ноября 2010

Я планирую написать несколько git-хуков в качестве проекта, который регистрирует действия пользователя в базе данных.Эту базу данных затем можно использовать для запроса всех его действий.Действия, которые я пытаюсь зарегистрировать:

  • commit
  • pull
  • push
  • merge
  • branch

Я хочу получить этот пакет в дистрибутивах, который можно установить через менеджер пакетов.Git разрешает глобальные хуки, помещая любые такие в $PREFIX/share/templates/hooks

. В настоящее время он имеет некоторые хуки, которые отключены (к их имени добавляется .sample).Когда создается новый репозиторий, эти ловушки копируются в папку .git хранилища

Теперь, если пользователь устанавливает пакет для этих ловушек, такие ловушки, как post-commit и post-update, уже включены.В этом случае файл сценария будет перезаписан!Это звучит плохо

Это означает, что у git есть только один файл хука на действие.Если мне нужно сохранить три крючка для одного действия, значит, это невозможно.Это означает, что автоматическая установка из диспетчера пакетов может привести к конфликтам.

Теперь подумайте, что мы упаковали хуки, чтобы перезаписать включенный по умолчанию файл.Если пользователь хочет добавить еще несколько действий к этому файлу, а затем решил удалить мой пакет, то его пользовательская команда также пропала бы?

Я думал, что git был довольно умен в этом отношении, и я ошибался:(

Должна быть папка с именами post-commit и post-update или любые другие действия, и git должен запускать все скрипты внутри этой папки. Я все еще ищу способ справиться с текущей ситуацией.

1 Ответ

3 голосов
/ 13 ноября 2010

Почему бы не написать ловушку post-commit (например), которая будет искать подкаталог "post-commit-hooks" и будет перечислять и выполнять все найденные в нем скрипты?
(первый, который не будет успешно запущен, потерпит неудачу в хуке всех пост-фиксаций)

Если пользователи инициализируют свои репозитории Git из предопределенного каталога шаблонов , вы можете убедиться, что все они получат эти специальные сценарии в своем новом репо.

...