Mercurial > hg
changeset 23397:c7c95838be9a
merge: break out "both renamed a -> b" case
We can further limit the scope of the 2-way merge case by breaking out
the case where the file was not created from scratch on both sides but
rather renamed in the same way (and is therefore a 3-way merge). This
involves copying some code, but it makes it clearer which case the
"Note:" in the code refers to.
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Mon, 24 Nov 2014 16:42:36 -0800 |
parents | 6a254a2dd37c |
children | 9da5a7413eb8 |
files | mercurial/merge.py tests/test-rename-merge2.t |
diffstat | 2 files changed, 10 insertions(+), 6 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/merge.py Mon Nov 24 16:16:34 2014 -0800 +++ b/mercurial/merge.py Mon Nov 24 16:42:36 2014 -0800 @@ -416,11 +416,15 @@ continue if n1 and n2: 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")) + fa = copy.get(f, None) + if fa is not None: + actions['m'].append((f, (f, f, fa, False, pa.node()), + "both renamed from " + fa)) + else: + # Note: f as ancestor is wrong - we can't really make a + # 3-way merge without an ancestor file. + actions['m'].append((f, (f, f, f, False, pa.node()), + "both created")) else: a = ma[f] fla = ma.flags(f)
--- a/tests/test-rename-merge2.t Mon Nov 24 16:16:34 2014 -0800 +++ b/tests/test-rename-merge2.t Mon Nov 24 16:42:36 2014 -0800 @@ -343,7 +343,7 @@ ancestor: 924404dff337, local: 62e7bf090eba+, remote: 49b6d8032493 preserving b for resolve of b preserving rev for resolve of rev - b: both created -> m + b: both renamed from a -> m updating: b 1/2 files (50.00%) picked tool 'python ../merge' for b (binary False symlink False) merging b