我需要列出自上次发布以来对master
分支所做的所有提交。我必须使用pygit2
实现此功能。但这里的情况有点不同。
在master
分支上使用tag
在other
分支上进行发布。天真的方法是找到最后sha
的{{1}},并将历史从tagged commit
向下移动到此HEAD
。但是在我的情况下,这个sha
不会发送到tagged commit
分支,而是master
分支。有趣的是,在other
分支上运行时,以下内容给出了正确的输出:
master
此处,$ git log sometag..HEAD --oneline
指向sometag
分支上的提交。所以,我想知道如果我有一个other
分支上所有提交的列表,我怎么能以编程方式实现它。
我想到的一个解决方案是找到master
的{{1}}并过滤我的提交列表。 timestamp
如何做到这一点,任何想法?
答案 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