diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -639,6 +639,20 @@ (f, f, None, False, pa.node()), b'both created', ) + elif f in branch_copies1.copy: + fa = branch_copies1.copy[f] + actions[f] = ( + mergestatemod.ACTION_MERGE, + (f, fa, fa, False, pa.node()), + b'local replaced from %s' % fa, + ) + elif f in branch_copies2.copy: + fa = branch_copies2.copy[f] + actions[f] = ( + mergestatemod.ACTION_MERGE, + (fa, f, fa, False, pa.node()), + b'other replaced from %s' % fa, + ) else: a = ma[f] fla = ma.flags(f) diff --git a/tests/test-copies.t b/tests/test-copies.t --- a/tests/test-copies.t +++ b/tests/test-copies.t @@ -501,11 +501,11 @@ original #else $ hg merge 2 - 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + merging x and y to y + 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) -BROKEN: should be "modified" $ cat y - original + modified #endif Same as above, but in the opposite direction #if filelog @@ -523,11 +523,11 @@ #else $ hg co -qC 2 $ hg merge 3 - 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + merging y and x to y + 0 files updated, 1 files merged, 0 files removed, 0 files unresolved (branch merge, don't forget to commit) -BROKEN: should be "modified" $ cat y - original + modified #endif Test for a case in fullcopytracing algorithm where neither of the merging csets