diff --git a/mercurial/merge.py b/mercurial/merge.py --- a/mercurial/merge.py +++ b/mercurial/merge.py @@ -415,14 +415,15 @@ def manifestmerge(repo, wctx, p2, pa, br if partial and not partial(f): continue if n1 and n2: - if True: - fa = f - a = ma.get(f, nullid) - if a == nullid: - fa = copy.get(f, f) - # Note: f as default is wrong - we can't really make a 3-way - # merge without an ancestor file. - fla = ma.flags(fa) + if f not in ma: + # Note: f as ancestor is wrong - we can't really make a 3-way + # merge without an ancestor file. + fa = copy.get(f, f) + actions['m'].append((f, (f, f, fa, False, pa.node()), + "both created")) + else: + a = ma[f] + fla = ma.flags(f) nol = 'l' not in fl1 + fl2 + fla if n2 == a and fl2 == fla: actions['k'].append((f, (), "keep")) # remote unchanged @@ -436,7 +437,7 @@ def manifestmerge(repo, wctx, p2, pa, br elif nol and n1 == a: # local only changed 'x' actions['g'].append((f, (fl1,), "remote is newer")) else: # both changed something - actions['m'].append((f, (f, f, fa, False, pa.node()), + actions['m'].append((f, (f, f, f, False, pa.node()), "versions differ")) elif f in copied: # files we'll deal with on m2 side pass diff --git a/tests/test-rename-merge2.t b/tests/test-rename-merge2.t --- a/tests/test-rename-merge2.t +++ b/tests/test-rename-merge2.t @@ -343,7 +343,7 @@ args: ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 preserving b for resolve of b preserving rev for resolve of rev - b: versions differ -> m + b: both created -> m updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -413,7 +413,7 @@ m "um a c" "um x c" " " "10 do merg ancestor: 924404dff337, local: 86a2aa42fc76+, remote: af30c7647fc7 preserving b for resolve of b preserving rev for resolve of rev - b: versions differ -> m + b: both created -> m updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -446,7 +446,7 @@ m "um a c" "um x c" " " "10 do merg a: other deleted -> r removing a updating: a 1/3 files (33.33%) - b: versions differ -> m + b: both created -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -478,7 +478,7 @@ m "um a c" "um x c" " " "10 do merg a: remote is newer -> g getting a updating: a 1/3 files (33.33%) - b: versions differ -> m + b: both created -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -511,7 +511,7 @@ m "um a c" "um x c" " " "10 do merg a: other deleted -> r removing a updating: a 1/3 files (33.33%) - b: versions differ -> m + b: both created -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -543,7 +543,7 @@ m "um a c" "um x c" " " "10 do merg a: remote is newer -> g getting a updating: a 1/3 files (33.33%) - b: versions differ -> m + b: both created -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -574,7 +574,7 @@ m "um a c" "um x c" " " "10 do merg preserving b for resolve of b preserving rev for resolve of rev a: keep -> k - b: versions differ -> m + b: both created -> m updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -609,7 +609,7 @@ m "um a c" "um x c" " " "10 do merg a: prompt recreating -> g getting a updating: a 1/3 files (33.33%) - b: versions differ -> m + b: both created -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b @@ -643,7 +643,7 @@ m "um a c" "um x c" " " "10 do merg preserving rev for resolve of rev a: prompt keep -> a updating: a 1/3 files (33.33%) - b: versions differ -> m + b: both created -> m updating: b 2/3 files (66.67%) picked tool 'python ../merge' for b (binary False symlink False) merging b diff --git a/tests/test-up-local-change.t b/tests/test-up-local-change.t --- a/tests/test-up-local-change.t +++ b/tests/test-up-local-change.t @@ -188,7 +188,7 @@ create a second head picked tool 'true' for a (binary False symlink False) merging a my a@1e71731e6fbb+ other a@83c51d0caff4 ancestor a@c19d34741b0a - b: versions differ -> m + b: both created -> m updating: b 2/2 files (100.00%) picked tool 'true' for b (binary False symlink False) merging b