Я планирую написать несколько git-хуков в качестве проекта, который регистрирует действия пользователя в базе данных.Эту базу данных затем можно использовать для запроса всех его действий.Действия, которые я пытаюсь зарегистрировать:
- commit
- pull
- push
- merge
- branch
Я хочу получить этот пакет в дистрибутивах, который можно установить через менеджер пакетов.Git разрешает глобальные хуки, помещая любые такие в $PREFIX/share/templates/hooks
. В настоящее время он имеет некоторые хуки, которые отключены (к их имени добавляется .sample
).Когда создается новый репозиторий, эти ловушки копируются в папку .git
хранилища
Теперь, если пользователь устанавливает пакет для этих ловушек, такие ловушки, как post-commit
и post-update
, уже включены.В этом случае файл сценария будет перезаписан!Это звучит плохо
Это означает, что у git есть только один файл хука на действие.Если мне нужно сохранить три крючка для одного действия, значит, это невозможно.Это означает, что автоматическая установка из диспетчера пакетов может привести к конфликтам.
Теперь подумайте, что мы упаковали хуки, чтобы перезаписать включенный по умолчанию файл.Если пользователь хочет добавить еще несколько действий к этому файлу, а затем решил удалить мой пакет, то его пользовательская команда также пропала бы?
Я думал, что git был довольно умен в этом отношении, и я ошибался:(
Должна быть папка с именами post-commit
и post-update
или любые другие действия, и git должен запускать все скрипты внутри этой папки. Я все еще ищу способ справиться с текущей ситуацией.