C'è qualche convenzione per l'ordine dei genitori di un commit?Git Commit Genes 'Order
Perché uno dei genitori di impegnarsi dovrebbe essere quello di essere a precedente commettere sul ramo corrente che viene fusa per incorporazione in e il resto sono impegna precedenti degli altri rami fusione.
Vorrei identificare il commit precedente del ramo corrente, sto usando pygit
che restituisce un elenco di genitori per un impegno e intuitivo Ho pensato che forse l'ordine dei genitori ha un significato, ma non ho trovato alcuna esplicita menzione di questo.
Ho scritto questa funzione di utilità, utilizzando primo genitore impegnano a percorrere ramo:
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
Non so su libgit2 e pygit2 ma il "primo" genitore è sempre quello del ramo in cui si trovava quando hai fatto un 'git merge'. Questo è l'estratto di '- first-parent', ed è il primo nell'output grezzo di' git cat-file -p somerev'. I genitori rimanenti sono i rami che sono stati "fusi". – torek
Grazie, non sapevo del termine "primo genitore". –