列出自上次发布以来标记指向其他分支上的提交的所有提交

时间:2016-07-12 14:26:48

标签: git version-control git-log git-tag pygit2

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

master分支上使用tagother分支上进行发布。天真的方法是找到最后sha的{​​{1}},并将历史从tagged commit向下移动到此HEAD。但是在我的情况下,这个sha不会发送到tagged commit分支,而是master分支。有趣的是,在other分支上运行时,以下内容给出了正确的输出:

master

此处,$ git log sometag..HEAD --oneline 指向sometag分支上的提交。所以,我想知道如果我有一个other分支上所有提交的列表,我怎么能以编程方式实现它。

我想到的一个解决方案是找到master的{​​{1}}并过滤我的提交列表。 timestamp如何做到这一点,任何想法?

1 个答案:

答案 0 :(得分:1)

我认为这会对您有所帮助:首先,我们使用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