# HG changeset patch # User Anton Shestakov # Date 1568803990 -25200 # Node ID 085295f828459f8ce90f6f5889bac3e0405945a8 # Parent e26c2440a030b2c5fc43de1a2feedee37d437557 merge: respect parents order when using `graft` on a merge, this time for real See a4ca0610c754. potherp1 is a boolean variable that means "pother is ctx.p1", and parents is naturally [ctx.p1, ctx.p2]. pctx is always removed from parents, so if pctx is parents[0], then we end up using parents[1] as pother. To be true to its name, potherp1 should then be True only when pctx is at parents[1]. diff -r e26c2440a030 -r 085295f82845 mercurial/merge.py --- a/mercurial/merge.py Sat Sep 07 14:35:21 2019 +0100 +++ b/mercurial/merge.py Wed Sep 18 17:53:10 2019 +0700 @@ -2256,7 +2256,7 @@ pother = nullid parents = ctx.parents() if keepparent and len(parents) == 2 and pctx in parents: - if pctx == parents[0]: + if pctx == parents[1]: potherp1 = True parents.remove(pctx) pother = parents[0].node()