diff -r 96b22e58dc67 -r f059d6ffcdf0 mercurial/merge.py --- a/mercurial/merge.py Mon Sep 09 12:56:17 2019 -0700 +++ b/mercurial/merge.py Mon Sep 09 17:26:17 2019 -0400 @@ -2250,17 +2250,23 @@ mergeancestor=mergeancestor, labels=labels) + potherp1 = False if keepconflictparent and stats.unresolvedcount: pother = ctx.node() else: pother = nullid parents = ctx.parents() if keepparent and len(parents) == 2 and pctx in parents: + if pctx == parents[0]: + potherp1 = True parents.remove(pctx) pother = parents[0].node() with repo.dirstate.parentchange(): - repo.setparents(repo['.'].node(), pother) + if potherp1: + repo.setparents(pother, repo['.'].node()) + else: + repo.setparents(repo['.'].node(), pother) repo.dirstate.write(repo.currenttransaction()) # fix up dirstate for copies and renames copies.duplicatecopies(repo, repo[None], ctx.rev(), pctx.rev())