1

我需要列出master自上次发布以来对分支所做的所有提交。我必须使用pygit2. 但这里的情况有点不同。

发布是在master分支上使用 a tagon a commit to otherbranch 进行的。天真的方法是找到sha最后一个并将历史从直到这个tagged commit向下移动。但在我的情况下,这不是对分支进行的,而是对分支进行的。有趣的是,以下在分支上运行时给出了正确的输出:HEADshatagged commitmasterothermaster

$ git log sometag..HEAD --oneline

这里,指向分支sometag上的提交。所以,我想知道如果我有一个分支other上所有提交的列表,我该如何以编程方式实现它。master

timestamp我想到的一种解决方案是找到tagged commit并过滤我的提交列表。这是怎么git log做的,有什么想法吗?

4

1 回答 1

4

我认为这会对您有所帮助:首先,我们用于Repository.walk()获取Walker(提交迭代器),然后我们对其进行修改(Walker.hide())以排除所有可访问的提交sometag

from pygit2 import Repository
from pygit2 import GIT_SORT_TIME

repo = Repository('.git')
start = repo.revparse_single('refs/heads/master')
release_tag = repo.revparse_single('refs/tags/sometag')

walker = repo.walk(start.id, GIT_SORT_TIME)
walker.hide(release_tag.id)
for commit in walker:
    print commit.message
于 2016-07-13T17:11:48.677 回答