changeset 23639:35c724903157

merge: let _resolvetrivial() work on the file->action dict By moving the conversion from the file->action dict after _resolvetrivial(), we greatly simplify and clarify that method.
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 11 Dec 2014 21:06:16 -0800
parents 09be050ca98c
children b46b9865dd08
files mercurial/merge.py
diffstat 1 files changed, 7 insertions(+), 19 deletions(-) [+]
line wrap: on
line diff
--- a/mercurial/merge.py	Thu Dec 11 20:56:53 2014 -0800
+++ b/mercurial/merge.py	Thu Dec 11 21:06:16 2014 -0800
@@ -531,25 +531,13 @@
     """Resolves false conflicts where the nodeid changed but the content
        remained the same."""
 
-    cdactions = []
-    for action in actions['cd']:
-        f = action[0]
-        if f in ancestor and not wctx[f].cmp(ancestor[f]):
+    for f, (m, args, msg) in actions.items():
+        if m == 'cd' and f in ancestor and not wctx[f].cmp(ancestor[f]):
             # local did change but ended up with same content
-            actions['r'].append((f, None, "prompt same"))
-        else:
-            cdactions.append(action)
-    actions['cd'] = cdactions
-
-    dcactions = []
-    for action in actions['dc']:
-        f = action[0]
-        if f in ancestor and not mctx[f].cmp(ancestor[f]):
+            actions[f] = 'r', None, "prompt same"
+        elif m == 'dc' and f in ancestor and not mctx[f].cmp(ancestor[f]):
             # remote did change but ended up with same content
-            pass # don't get = keep local deleted
-        else:
-            dcactions.append(action)
-    actions['dc'] = dcactions
+            del actions[f] # don't get = keep local deleted
 
 def calculateupdates(repo, wctx, mctx, ancestors, branchmerge, force, partial,
                      acceptremote, followcopies):
@@ -627,14 +615,14 @@
             continue
         repo.ui.note(_('end of auction\n\n'))
 
+    _resolvetrivial(repo, wctx, mctx, ancestors[0], actions)
+
     # Convert to dictionary-of-lists format
     actionbyfile = actions
     actions = dict((m, []) for m in 'a f g cd dc r dm dg m e k'.split())
     for f, (m, args, msg) in actionbyfile.iteritems():
         actions[m].append((f, args, msg))
 
-    _resolvetrivial(repo, wctx, mctx, ancestors[0], actions)
-
     if wctx.rev() is None:
         ractions, factions = _forgetremoved(wctx, mctx, branchmerge)
         actions['r'].extend(ractions)