Есть ли какое-то соглашение о порядке родителей коммита?
Потому что один из родителей коммита должен быть предыдущим коммитом в текущей ветке, в которую происходит слияние, а остальные являются предыдущими коммитами других веток слияния.
Я хочу идентифицировать предыдущую фиксацию текущей ветки, я использую pygit
, который возвращает список родителей для фиксации, и интуитивно я подумал, что, возможно, порядок родителей имеет значение, но я не нашел явного упоминания об этом.
Я написал эту служебную функцию, используя first parent commit для обхода ветки:
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
. Остальные родители — это ветки, из которых были объединены. - person torek   schedule 18.08.2013