Получить все коммиты при отправке на сервер

Я делаю крючок git post-commit, чтобы публиковать сообщения о фиксации в Twitter. Я настроил ловушку на сервере, что означает, что она запускается только тогда, когда я вызываю git push.

Для взаимодействия с git из python я использую GitPython. В моем коде я использую repo.head.commit.message для получения последнего сообщения фиксации. Это означает, что если я нажму несколько коммитов, он получит только последний.

Это то, что у меня есть до сих пор.

class GITHelper:
    "This class interacts with GIT for us"
    def __init__(self, path):
        repo = git.Repo(path)
        headcommit = repo.head.commit
        self.message = headcommit.message
        self.author = headcommit.author.name

Как я могу получить все коммиты из push? Или, как я могу получить количество коммитов, которые были отправлены?

repo.iter_commits('master', max_count=5) может получить столько коммитов, сколько я хочу, поэтому, если бы я знал, сколько коммитов было, я мог бы это использовать.

EDIT: я тестировал, и когда я запускаю git push, кажется, что этот хук получает заголовок из последнего коммита, а не из того, который я только что нажал. Как мне сделать хук после фиксации, который получает сообщения от коммитов, которые я только что отправил на сервер?

РЕДАКТИРОВАТЬ 2: на самом деле я использую хук обновления, а не хук после фиксации, это правильный хук для использования на сервере?


person Rocket Hazmat    schedule 09.06.2011    source источник


Ответы (1)


В документах githooks говорится:

The hook executes once for each ref to be updated, and takes three parameters:
  - the name of the ref being updated,
  - the old object name stored in the ref,
  - and the new objectname to be stored in the ref.

Итак, проверьте аргументы, которые получает ваш скрипт, вы также должны получить новую ссылку, а затем вы можете выяснить коммиты между старой и новой ссылкой. Если бы это был сценарий оболочки, вы могли бы сделать:

git log --oneline $oldRef..$newRef
person Bobby Powers    schedule 09.06.2011
comment
Спасибо. Я все еще новичок в git, поэтому я не знал на 100%, как работают хуки. Теперь посмотрим, есть ли у GitPython способ получить коммиты между двумя ссылками. - person Rocket Hazmat; 09.06.2011