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

1

Я делаю git post- фиксацию фиксации для отправки сообщений о совершении транзакций в 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

Как я могу получить все фиксации от нажатия? Или, как я могу получить количество совершенных коммитов?

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

РЕДАКТИРОВАТЬ: я тестировал, и когда я запускаю git push, кажется, что этот крюк получает голову от последнего коммита, а не тот, который я только что нажал. Как я могу сделать крюк фиксации post-, который получает сообщения от коммитов, которые я только что нажал на сервер?

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

Теги:
gitpython

1 ответ

3
Лучший ответ

githooks docs говорят:

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.

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

git log --oneline $oldRef..$newRef
  • 0
    Благодарю. Я все еще новичок в Git, так что я не был на 100%, как работают крючки. Теперь посмотрим, есть ли у GitPython способ получить коммит между двумя ссылками.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню