当标记指向其他分支上的提交时,列出自上次发布以来的所有提交
List all commits since last release when the tag points to a commit on other branch
我需要列出自上次发布以来对 master
分支所做的所有提交。我必须使用 pygit2
来实现此功能。但是这里的情况有点不同。
发布是在 master
分支上使用 tag
提交到 other
分支。天真的方法是找到最后一个 tagged commit
的 sha
并将历史记录从 HEAD
向下移动到这个 sha
。但是这个 tagged commit
不是针对我的 master
分支,而是针对 other
分支。有趣的是,当 运行 超过 master
分支时,以下给出了正确的输出:
$ git log sometag..HEAD --oneline
此处,sometag
指向 other
分支上的提交。所以,我想知道如果我有在 master
分支上进行的所有提交的列表,我该如何以编程方式实现它。
我想到的一个解决方案是找到 tagged commit
的 timestamp
并过滤我的提交列表。 git log
是怎么做到的,有什么想法吗?
我认为这会对您有所帮助:首先,我们使用 Repository.walk()
to get a Walker
(commit iterator), and then we modify it (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
我需要列出自上次发布以来对 master
分支所做的所有提交。我必须使用 pygit2
来实现此功能。但是这里的情况有点不同。
发布是在 master
分支上使用 tag
提交到 other
分支。天真的方法是找到最后一个 tagged commit
的 sha
并将历史记录从 HEAD
向下移动到这个 sha
。但是这个 tagged commit
不是针对我的 master
分支,而是针对 other
分支。有趣的是,当 运行 超过 master
分支时,以下给出了正确的输出:
$ git log sometag..HEAD --oneline
此处,sometag
指向 other
分支上的提交。所以,我想知道如果我有在 master
分支上进行的所有提交的列表,我该如何以编程方式实现它。
我想到的一个解决方案是找到 tagged commit
的 timestamp
并过滤我的提交列表。 git log
是怎么做到的,有什么想法吗?
我认为这会对您有所帮助:首先,我们使用 Repository.walk()
to get a Walker
(commit iterator), and then we modify it (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