##// END OF EJS Templates
merge: add a 'keepconflictparent' argument to graft...
Boris Feld -
r38513:d4be8ea8 default
parent child Browse files
Show More
@@ -2194,7 +2194,8 b' def update(repo, node, branchmerge, forc'
2194 error=stats.unresolvedcount)
2194 error=stats.unresolvedcount)
2195 return stats
2195 return stats
2196
2196
2197 def graft(repo, ctx, pctx, labels, keepparent=False):
2197 def graft(repo, ctx, pctx, labels, keepparent=False,
2198 keepconflictparent=False):
2198 """Do a graft-like merge.
2199 """Do a graft-like merge.
2199
2200
2200 This is a merge where the merge ancestor is chosen such that one
2201 This is a merge where the merge ancestor is chosen such that one
@@ -2207,6 +2208,7 b' def graft(repo, ctx, pctx, labels, keepp'
2207 pctx - merge base, usually ctx.p1()
2208 pctx - merge base, usually ctx.p1()
2208 labels - merge labels eg ['local', 'graft']
2209 labels - merge labels eg ['local', 'graft']
2209 keepparent - keep second parent if any
2210 keepparent - keep second parent if any
2211 keepparent - if unresolved, keep parent used for the merge
2210
2212
2211 """
2213 """
2212 # If we're grafting a descendant onto an ancestor, be sure to pass
2214 # If we're grafting a descendant onto an ancestor, be sure to pass
@@ -2220,11 +2222,15 b' def graft(repo, ctx, pctx, labels, keepp'
2220 stats = update(repo, ctx.node(), True, True, pctx.node(),
2222 stats = update(repo, ctx.node(), True, True, pctx.node(),
2221 mergeancestor=mergeancestor, labels=labels)
2223 mergeancestor=mergeancestor, labels=labels)
2222
2224
2223 pother = nullid
2225
2224 parents = ctx.parents()
2226 if keepconflictparent and stats.unresolvedcount:
2225 if keepparent and len(parents) == 2 and pctx in parents:
2227 pother = ctx.node()
2226 parents.remove(pctx)
2228 else:
2227 pother = parents[0].node()
2229 pother = nullid
2230 parents = ctx.parents()
2231 if keepparent and len(parents) == 2 and pctx in parents:
2232 parents.remove(pctx)
2233 pother = parents[0].node()
2228
2234
2229 with repo.dirstate.parentchange():
2235 with repo.dirstate.parentchange():
2230 repo.setparents(repo['.'].node(), pother)
2236 repo.setparents(repo['.'].node(), pother)
General Comments 0
You need to be logged in to leave comments. Login now