diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -251,7 +251,7 @@ def manifestmerge(repo, p1, p2, pa, over elif nol and n2 == a: # remote only changed 'x' act("update permissions", "e", f, fl2) elif nol and n == a: # local only changed 'x' - act("remote is newer", "g", f, fl) + act("remote is newer", "g", f, fl1) else: # both changed something act("versions differ", "m", f, f, f, False) elif f in copied: # files we'll deal with on m2 side diff --git a/tests/test-merge-types.t b/tests/test-merge-types.t --- a/tests/test-merge-types.t +++ b/tests/test-merge-types.t @@ -197,6 +197,26 @@ Test removed 'x' flag merged with change f is a plain file with content: f +Test removed 'x' flag merged with content change - both ways + + $ hg up -Cqr0 + $ echo change > f + $ hg ci -qm3 + $ hg merge -r1 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ tellmeabout f + f is a plain file with content: + change + + $ hg up -qCr1 + $ hg merge -r3 + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + $ tellmeabout f + f is a plain file with content: + change + $ cd .. Test merge with no common ancestor: