git update hook: поиск всех совершаемых оборотов - PullRequest
2 голосов
/ 12 марта 2010

Я создаю хук обновления, чтобы наш центральный 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 для получения каждой версии, которую клиент пытается выдвинуть?

1 Ответ

4 голосов
/ 12 марта 2010

git rev-list ^old_rev new_rev

Это список всех коммитов между этими двумя коммитами

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...