Я создаю хук обновления, чтобы наш центральный git-репозиторий мог выполнять несколько простых проверок работоспособности каждого файла в каждом коммите. Тем не менее, я не знаю, как заставить git выкашливать имена всех коммитов одним нажатием.
Независимо от того, сколько коммитов отправляет клиент, ловушка обновления вызывается только один раз (по замыслу). Например, предположим, что HEAD - это e2706ec, и я создаю два коммита:
$ echo 'date' >>foo && git commit -am'Touched foo'
[master e5c9682] Touched foo
1 files changed, 1 insertions(+), 0 deletions(-)
$ echo 'date' >>bar && git commit -am'Touched bar'
[master bdc1fd1] Touched bar
1 files changed, 1 insertions(+), 0 deletions(-)
Затем я отправляю код в центральное хранилище:
$ git push
Сценарий .git / hooks / update вызывается один раз со следующими аргументами:
- ссылки / главы / мастер
- e2706ec31e51b9bbd4010e79fd7186089c59690e
- bdc1fd17e8209bbb987b5358a0b49b20d9589103
Git передает хуку обновления ref_name, old_rev и new_rev. То, что не проходит, это имена любых оборотов между old_rev и new_rev (в данном случае e5c9682).
Учитывая old_rev и new_rev, каково заклинание git для получения каждой версии, которую клиент пытается выдвинуть?