git hooks: есть ли крючок клона?
Мы хотим сохранить некоторую мета-информацию о коммите во внешней базе данных. Во время клонирования или проверки эта база данных должна быть передана, и мы копируем метаинформацию в файл в репо, который клонируется. База данных требуется, а не просто использовать файл для индексации и поиска и т.д...
Я думал, что если есть клоновый хук, мы могли бы вызвать это. Я не смог найти крючки клонирования в образце в.git/hooks. есть один? является ли крюк после оформления заказа единственной возможностью на стороне клиента?
3 ответа
Хорошо, один из способов сделать это - использовать clone --template
вариант.
Укажите место, где хуки на стороне клиента будут храниться в качестве значения для --template
переключатель. Крюки копируются в клон, и крюк после проверки срабатывает немедленно!
Когда вы клонируете удаленный репозиторий, вы не можете запускать какие-либо перехватчики на стороне клиента, потому что перехватчики являются локальными для вашей рабочей копии, и вы создаете ее с нуля. Когда вы извлекаете новые изменения из удаленного хранилища, git будет запускать ваш локальный post-merge
крючок, если он существует.
На сервере ничего не запускается в результате операции извлечения. Операция push активирует серверы update
а также post-update
крючки.
Смотрите Git Book для получения дополнительной информации.
Начиная с git версии 1.6.3, обработчик post-checkout запускается на git-clone (при запуске без--no-checkout
).
Он также запускается после git-clone[1], если не используется параметр --no-checkout (-n). Первый параметр, передаваемый ловушке, - это null-ref, второй - ref нового HEAD, а флаг всегда равен 1.
Я опаздываю, но есть обходной путь:
Захватить
git clone
выполнение и установить переменную, используяtrap set_var_on_git_clone DEBUG
гдеset_var_on_git_clone
это функция, определяемая пользователем. (например, https://gist.github.com/KeyAmam/a6afcabc3a724fc4a541aca7629c3ff6)Проверьте переменную в
post-checkout
скрипт и делать кое-что по делу. Очистите переменную в конце скрипта. (например, https://gist.github.com/KeyAmam/6a0e8805c0b6a662adb6bcf8118a089a)
Это работает только в Bash, но вы можете делать то же самое в других оболочках.