在提交的父节点中有没有约定的顺序?因为其中一个提交的父节点应该是当前分支上正在合并的前一个提交,其余的则是来自其他合并分支的之前的提交。
我想找到当前分支的前一个提交,我正在使用pygit
,它返回一个提交的父节点列表,直觉上我认为父节点的顺序可能很重要,但我没有发现明确提到这一点。
我编写了这个实用函数,使用第一个父节点提交来遍历分支:
def walk_branch(pygit_repository, branch_oid):
"""
Walk a single branch
"""
from pygit2 import GIT_SORT_TOPOLOGICAL
previous_first_parent_oid = None
for commit in pygit_repository.walk(branch_oid, GIT_SORT_TOPOLOGICAL):
if previous_first_parent_oid is None or commit.oid == previous_first_parent_oid:
previous_first_parent_oid = commit.parents[0].oid if len(commit.parents) else None
yield commit
git merge
时所在的分支。这是--first-parent
提取的内容,并且它是从git cat-file -p somerev
的原始输出中的第一个。其余的父级是“合并自”的分支。 - torek