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