コミットの親の順序に関する規則はありますか?
コミットの親の 1 つは、マージされている現在のブランチの以前のコミットにする必要があり、残りは他のマージブランチの以前のコミットであるためです。
現在のブランチの以前のコミットを特定したいと思います。コミットの親のリストを返すを使用して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