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.

https://git-scm.com/docs/githooks

Я опаздываю, но есть обходной путь:

  1. Захватить git clone выполнение и установить переменную, используя trap set_var_on_git_clone DEBUG где set_var_on_git_cloneэто функция, определяемая пользователем. (например, https://gist.github.com/KeyAmam/a6afcabc3a724fc4a541aca7629c3ff6)

  2. Проверьте переменную в post-checkoutскрипт и делать кое-что по делу. Очистите переменную в конце скрипта. (например, https://gist.github.com/KeyAmam/6a0e8805c0b6a662adb6bcf8118a089a)

Это работает только в Bash, но вы можете делать то же самое в других оболочках.

Другие вопросы по тегам