# HG changeset patch # User Pulkit Goyal <7895pulkit@gmail.com> # Date 2021-03-10 07:44:32 # Node ID 5a0b930cfb3ee0dba307a80b0ca90b4ff4cfb823 # Parent 56d441256e82837d0ed7d1a834a9181a6af570d3 commit: get info from mergestate whether a file was merged or not While commiting a merge, the commit code does not know whether a file was merged during `hg merge` or not. This leads the commit code to look for filelog ancestor to choose parents of new filelog created on merge commit. This leads to wrong results in some cases as demonstrated by previous patch. From this patch, we start storing information about merged files in mergestate in stateextras and then use that on commit to detect whether we need to set two parents or not. Differential Revision: https://phab.mercurial-scm.org/D10149 diff --git a/mercurial/commit.py b/mercurial/commit.py --- a/mercurial/commit.py +++ b/mercurial/commit.py @@ -361,6 +361,8 @@ def _filecommit( elif fparent2 != nullid: if ms.active() and ms.extras(fname).get(b'filenode-source') == b'other': fparent1, fparent2 = fparent2, nullid + elif ms.active() and ms.extras(fname).get(b'merged') != b'yes': + fparent1, fparent2 = fparent1, nullid # is one parent an ancestor of the other? else: fparentancestors = flog.commonancestorsheads(fparent1, fparent2) diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -1698,6 +1698,7 @@ def applyupdates( tocomplete = [] for f, args, msg in mergeactions: repo.ui.debug(b" %s: %s -> m (premerge)\n" % (f, msg)) + ms.addcommitinfo(f, {b'merged': b'yes'}) progress.increment(item=f) if f == b'.hgsubstate': # subrepo states need updating subrepoutil.submerge( @@ -1713,6 +1714,7 @@ def applyupdates( # merge for f, args, msg in tocomplete: repo.ui.debug(b" %s: %s -> m (merge)\n" % (f, msg)) + ms.addcommitinfo(f, {b'merged': b'yes'}) progress.increment(item=f, total=numupdates) ms.resolve(f, wctx) diff --git a/tests/test-backout.t b/tests/test-backout.t --- a/tests/test-backout.t +++ b/tests/test-backout.t @@ -718,6 +718,7 @@ Test usage of `hg resolve` in case of co ancestor path: foo (node f89532f44c247a0e993d63e3a734dd781ab04708) other path: foo (node f50039b486d6fa1a90ae51778388cad161f425ee) extra: ancestorlinknode = 91360952243723bd5b1138d5f26bd8c8564cb553 + extra: merged = yes $ mv .hg/merge/state2 .hg/merge/state2-moved $ hg debugmergestate -v no version 2 merge state diff --git a/tests/test-copies-chain-merge.t b/tests/test-copies-chain-merge.t --- a/tests/test-copies-chain-merge.t +++ b/tests/test-copies-chain-merge.t @@ -946,8 +946,7 @@ Merge: $ hg ci -m "mFB-change-m-0 $case_desc - the other way" created new head $ hg manifest --rev . --debug | grep " d" - 1c334238bd42ec85c6a0d83fd1b2a898a6a3215d 644 d (no-changeset missing-correct-output !) - 646ed7992dec41eb29635ab28268e7867d0e59a0 644 d (no-changeset known-bad-output !) + 1c334238bd42ec85c6a0d83fd1b2a898a6a3215d 644 d (no-changeset !) cea2d99c0fde64672ef61953786fdff34f16e230 644 d (changeset !) #if no-changeset $ hg debugindex d | ../no-linkrev @@ -961,7 +960,6 @@ Merge: 6 * 89c873a01d97 7b79e2fe0c89 17ec97e60577 7 * d55cb4e9ef57 000000000000 000000000000 8 * 1c334238bd42 7b79e2fe0c89 000000000000 - 9 * 646ed7992dec 7b79e2fe0c89 d8252ab2e760 (known-bad-output !) #else $ hg debugindex d | ../no-linkrev rev linkrev nodeid p1 p2 @@ -1917,10 +1915,12 @@ We upgrade a repository that is not usin ##### revision "mFB-change-m-0 merge with extra change - B side" ##### 1 sidedata entries entry-0014 size 14 - '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d' (known-bad-output !) - merged : d, ; (known-bad-output !) - '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00d' (missing-correct-output !) - touched : d, ; (missing-correct-output !) + '\x00\x00\x00\x01\x14\x00\x00\x00\x01\x00\x00\x00\x00d' (no-upgraded no-upgraded-parallel !) + touched : d, ; (no-upgraded no-upgraded-parallel !) + '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d' (upgraded-parallel known-bad-output !) + merged : d, ; (upgraded-parallel known-bad-output !) + '\x00\x00\x00\x01\x08\x00\x00\x00\x01\x00\x00\x00\x00d' (upgraded known-bad-output !) + merged : d, ; (upgraded known-bad-output !) ##### revision "j-1" ##### 1 sidedata entries entry-0014 size 24 @@ -3357,13 +3357,7 @@ Merge: $ hg status --copies --rev 'desc("i-0")' --rev 'desc("mFB-change-m-0")' M b A d - h (filelog missing-correct-output !) - a (filelog known-bad-output !) - h (sidedata !) - h (upgraded !) - h (upgraded-parallel !) - h (changeset !) - h (compatibility !) + h A t p R a @@ -3422,10 +3416,6 @@ BROKEN: `hg log --follow ` relies | : o : f-1: rename h -> i :/ - o i-2: c -move-> d, s -move-> t (known-bad-output !) - | (known-bad-output !) - o i-1: a -move-> c, p -move-> s (known-bad-output !) - | (known-bad-output !) o i-0 initial commit: a b h p q r #else diff --git a/tests/test-histedit-non-commute-abort.t b/tests/test-histedit-non-commute-abort.t --- a/tests/test-histedit-non-commute-abort.t +++ b/tests/test-histedit-non-commute-abort.t @@ -84,6 +84,7 @@ insert unsupported advisory merge record ancestor path: e (node 0000000000000000000000000000000000000000) other path: e (node 6b67ccefd5ce6de77e7ead4f5292843a0255329f) extra: ancestorlinknode = 0000000000000000000000000000000000000000 + extra: merged = yes $ hg resolve -l U e diff --git a/tests/test-merge-changedelete.t b/tests/test-merge-changedelete.t --- a/tests/test-merge-changedelete.t +++ b/tests/test-merge-changedelete.t @@ -96,17 +96,20 @@ Non-interactive merge: other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -163,17 +166,20 @@ Interactive merge: other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "r") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -243,17 +249,20 @@ Interactive merge with bad input: other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "r") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes *** file1 does not exist --- file2 --- 2 @@ -307,17 +316,20 @@ Interactive merge with not enough input: other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes *** file1 does not exist --- file2 --- 2 @@ -358,17 +370,20 @@ Choose local versions of files other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "r") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "r") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -405,17 +420,20 @@ Choose other versions of files other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "r") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "r") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes *** file1 does not exist --- file2 --- 2 @@ -453,17 +471,20 @@ Fail other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -512,17 +533,20 @@ Force prompts with no input (should be s other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -573,17 +597,20 @@ Force prompts other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -631,17 +658,20 @@ Choose to merge all files other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff extra: merge-removal-candidate = yes + extra: merged = yes file: file3 (state "u") local path: file3 (hash d5b0a58bc47161b1b8a831084b366f757c4f0b11, flags "") ancestor path: file3 (node 2661d26c649684b482d10f91960cc3db683c38b4) other path: file3 (node a2644c43e210356772c7772a8674544a62e06beb) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -801,11 +831,13 @@ Non-interactive linear update ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be) other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -840,11 +872,13 @@ Choose local versions of files ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be) other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes file: file2 (state "r") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -877,11 +911,13 @@ Choose other versions of files ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be) other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes file: file2 (state "r") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes *** file1 does not exist --- file2 --- 2 @@ -916,11 +952,13 @@ Fail ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be) other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -963,11 +1001,13 @@ Force prompts with no input ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be) other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed @@ -1011,11 +1051,13 @@ Choose to merge all files ancestor path: file1 (node b8e02f6433738021a065f94175c7cd23db5f05be) other path: file1 (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes file: file2 (state "u") local path: file2 (hash 0000000000000000000000000000000000000000, flags "") ancestor path: file2 (node 5d9299349fc01ddd25d0070d149b124d8f10411e) other path: file2 (node e7c1328648519852e723de86c0c0525acd779257) extra: ancestorlinknode = ab57bf49aa276a22d35a473592d4c34b5abc3eff + extra: merged = yes --- file1 --- 1 changed diff --git a/tests/test-merge-criss-cross.t b/tests/test-merge-criss-cross.t --- a/tests/test-merge-criss-cross.t +++ b/tests/test-merge-criss-cross.t @@ -540,6 +540,7 @@ Do all the merge combination (from the deleted or the update side × keeping and deleting the file other path: the-file (node 59e363a07dc876278f0e41756236f30213b6b460) extra: ancestorlinknode = 955800955977bd6c103836ee3e437276e940a589 extra: merge-removal-candidate = yes + extra: merged = yes extra: other-file (filenode-source = other) $ hg ci -m "merge-deleting-the-file-from-deleted" $ hg manifest @@ -563,6 +564,7 @@ Do all the merge combination (from the deleted or the update side × keeping and deleting the file other path: the-file (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = 955800955977bd6c103836ee3e437276e940a589 extra: merge-removal-candidate = yes + extra: merged = yes $ hg ci -m "merge-deleting-the-file-from-updated" created new head $ hg manifest @@ -586,6 +588,7 @@ Do all the merge combination (from the deleted or the update side × keeping and deleting the file other path: the-file (node 59e363a07dc876278f0e41756236f30213b6b460) extra: ancestorlinknode = 955800955977bd6c103836ee3e437276e940a589 extra: merge-removal-candidate = yes + extra: merged = yes extra: other-file (filenode-source = other) $ hg ci -m "merge-keeping-the-file-from-deleted" created new head @@ -614,6 +617,7 @@ Do all the merge combination (from the deleted or the update side × keeping and deleting the file other path: the-file (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = 955800955977bd6c103836ee3e437276e940a589 extra: merge-removal-candidate = yes + extra: merged = yes $ hg ci -m "merge-keeping-the-file-from-updated" created new head $ hg manifest @@ -695,6 +699,7 @@ the conflict is properly detected. other path: the-file (node 885af55420b35d7bf3bbd6f546615295bfe6544a) extra: ancestorlinknode = 9b610631ab29024c5f44af7d2c19658ef8f8f071 extra: merge-removal-candidate = yes + extra: merged = yes #else $ hg debugmergestate local (working copy): adfd88e5d7d3d3e22bdd26512991ee64d59c1d8f @@ -763,6 +768,7 @@ BROKEN: this should result in conflict other path: the-file (node 885af55420b35d7bf3bbd6f546615295bfe6544a) extra: ancestorlinknode = 9b610631ab29024c5f44af7d2c19658ef8f8f071 extra: merge-removal-candidate = yes + extra: merged = yes #else $ hg debugmergestate local (working copy): a4e0e44229dc130be2915b92c957c093f8c7ee3e @@ -886,6 +892,7 @@ BROKEN: this should result in conflict other path: the-file (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = 9b610631ab29024c5f44af7d2c19658ef8f8f071 extra: merge-removal-candidate = yes + extra: merged = yes #else $ hg debugmergestate local (working copy): e9b7081317232edce73f7ad5ae0b7807ff5c326a @@ -923,6 +930,7 @@ BROKEN: this should result in conflict other path: the-file (node 0000000000000000000000000000000000000000) extra: ancestorlinknode = 9b610631ab29024c5f44af7d2c19658ef8f8f071 extra: merge-removal-candidate = yes + extra: merged = yes #else $ hg debugmergestate local (working copy): e9b7081317232edce73f7ad5ae0b7807ff5c326a diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t --- a/tests/test-obsolete.t +++ b/tests/test-obsolete.t @@ -1844,6 +1844,7 @@ The local node should now point to a non ancestor path: file (node bc7ebe2d260cff30d2a39a130d84add36216f791) other path: file (node b789fdd96dc2f3bd229c1dd8eedf0fc60e2b68e3) extra: ancestorlinknode = b73b8c9a4ab4da89a5a35a6f10dfb13edc84ca37 + extra: merged = yes We should be able to see the log (without the deleted commit, of course) $ hg log -G @ 0:f53e9479dce5 (draft) [tip ] first diff --git a/tests/test-rebase-abort.t b/tests/test-rebase-abort.t --- a/tests/test-rebase-abort.t +++ b/tests/test-rebase-abort.t @@ -95,6 +95,7 @@ Insert unsupported advisory merge record ancestor path: common (node de0a666fdd9c1a0b0698b90d85064d8bd34f74b6) other path: common (node 2f6411de53677f6f1048fef5bf888d67a342e0a5) extra: ancestorlinknode = 3163e20567cc93074fbb7a53c8b93312e59dbf2c + extra: merged = yes $ hg resolve -l U common diff --git a/tests/test-resolve.t b/tests/test-resolve.t --- a/tests/test-resolve.t +++ b/tests/test-resolve.t @@ -255,11 +255,13 @@ insert unsupported advisory merge record ancestor path: file1 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd) other path: file1 (node 6f4310b00b9a147241b071a60c28a650827fb03d) extra: ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac + extra: merged = yes file: file2 (state "u") local path: file2 (hash cb99b709a1978bd205ab9dfd4c5aaa1fc91c7523, flags "") ancestor path: file2 (node 2ed2a3912a0b24502043eae84ee4b279c18b90dd) other path: file2 (node 6f4310b00b9a147241b071a60c28a650827fb03d) extra: ancestorlinknode = 99726c03216e233810a2564cbc0adfe395007eac + extra: merged = yes $ hg resolve -l R file1 U file2 @@ -271,7 +273,7 @@ test json output { "commits": [{"label": "working copy", "name": "local", "node": "57653b9f834a4493f7240b0681efcb9ae7cab745"}, {"label": "merge rev", "name": "other", "node": "dc77451844e37f03f5c559e3b8529b2b48d381d1"}], "extras": [], - "files": [{"ancestor_node": "2ed2a3912a0b24502043eae84ee4b279c18b90dd", "ancestor_path": "file1", "extras": [{"key": "ancestorlinknode", "value": "99726c03216e233810a2564cbc0adfe395007eac"}], "local_flags": "", "local_key": "60b27f004e454aca81b0480209cce5081ec52390", "local_path": "file1", "other_node": "6f4310b00b9a147241b071a60c28a650827fb03d", "other_path": "file1", "path": "file1", "state": "r"}, {"ancestor_node": "2ed2a3912a0b24502043eae84ee4b279c18b90dd", "ancestor_path": "file2", "extras": [{"key": "ancestorlinknode", "value": "99726c03216e233810a2564cbc0adfe395007eac"}], "local_flags": "", "local_key": "cb99b709a1978bd205ab9dfd4c5aaa1fc91c7523", "local_path": "file2", "other_node": "6f4310b00b9a147241b071a60c28a650827fb03d", "other_path": "file2", "path": "file2", "state": "u"}] + "files": [{"ancestor_node": "2ed2a3912a0b24502043eae84ee4b279c18b90dd", "ancestor_path": "file1", "extras": [{"key": "ancestorlinknode", "value": "99726c03216e233810a2564cbc0adfe395007eac"}, {"key": "merged", "value": "yes"}], "local_flags": "", "local_key": "60b27f004e454aca81b0480209cce5081ec52390", "local_path": "file1", "other_node": "6f4310b00b9a147241b071a60c28a650827fb03d", "other_path": "file1", "path": "file1", "state": "r"}, {"ancestor_node": "2ed2a3912a0b24502043eae84ee4b279c18b90dd", "ancestor_path": "file2", "extras": [{"key": "ancestorlinknode", "value": "99726c03216e233810a2564cbc0adfe395007eac"}, {"key": "merged", "value": "yes"}], "local_flags": "", "local_key": "cb99b709a1978bd205ab9dfd4c5aaa1fc91c7523", "local_path": "file2", "other_node": "6f4310b00b9a147241b071a60c28a650827fb03d", "other_path": "file2", "path": "file2", "state": "u"}] } ]