Сообщения о фиксации различий двух веток с помощью gitpython

На работе у нас есть рабочий процесс, в котором каждая ветвь «названа» по дате. В течение недели, по крайней мере, один раз последняя ветка отправляется в производство. Что нам нужно сейчас, так это сводные/коммитные сообщения об изменениях между последней веткой в ​​продакшене и новой веткой через gitpython.

Что я пытался сделать:

import git

g = git.Git("pathToRepo")
r = git.Repo("pathToRepo")
g.pull() # get latest

b1commits = r.git.log("branch1")
b2commits = r.git.log("branch2")

Это дает мне всю историю коммитов из обеих ветвей, но я не могу понять, как их сравнить, чтобы просто получить новейшие сообщения коммитов.

Возможно ли это сделать в gitPython? Или есть лучшее решение?


person stackErr    schedule 04.10.2016    source источник


Ответы (2)


Я понял:

import git

g = git.Git(repoPath+repoName)
g.pull()
commitMessages = g.log('%s..%s' % (oldBranch, newBranch), '--pretty=format:%ad %an - %s', '--abbrev-commit')

Прочитав документацию Git, я обнаружил, что могу сравнить две ветки с этим синтаксисом B1..B2. Я попробовал то же самое с gitpython, и это сработало, другие параметры предназначены для пользовательского формата.

person stackErr    schedule 04.10.2016

В этом решении используется GitPython.

import git

def get_commit_from_range(start_commit, end_commit):
    repo = git.Repo('path')
    commit_range = f"{start_commit}...{end_commit}"
    result = repo.iter_commits(commit_range)
    for commit in result:
       print(commit.message)
person Mikey Yang    schedule 06.11.2019