[PATCH 6 of 6] merge: use None as filename for base in 'both created' conflicts

Martin von Zweigbergk martinvonz at google.com
Mon Nov 24 23:22:52 CST 2014


# HG changeset patch
# User Martin von Zweigbergk <martinvonz at google.com>
# Date 1416874622 28800
#      Mon Nov 24 16:17:02 2014 -0800
# Node ID 701701b84bba376ab63af472f3dc57730ba4c251
# Parent  9a17f0a1c28705f0d7fdf7732d94f27087892dad
merge: use None as filename for base in 'both created' conflicts

Instead of using a file that we know is not in the common ancestor's
maniffest, let's use None. This is safe as the only place that cares
about the value (applyupdates) already checks if the item exists in
the ancestor.

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -421,9 +421,7 @@
                     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()),
+                    actions['m'].append((f, (f, f, None, False, pa.node()),
                                    "both created"))
             else:
                 a = ma[f]
@@ -493,8 +491,7 @@
             else:
                 different = _checkunknownfile(repo, wctx, p2, f)
                 if force and branchmerge and different:
-                    # FIXME: This is wrong - f is not in ma ...
-                    actions['m'].append((f, (f, f, f, False, pa.node()),
+                    actions['m'].append((f, (f, f, None, False, pa.node()),
                                     "remote differs from untracked local"))
                 elif not force and different:
                     aborts.append((f, 'ud'))


More information about the Mercurial-devel mailing list