diff mercurial/merge.py @ 23641:a7a0f32a383f

merge: make calculateupdates() return file->action dict This simplifies largefiles' overridecalculateupdates(), which no longer has to do the conversion it started doing in 38e55e55ae4d (largefiles: rewrite merge code using dictionary with entry per file, 2014-12-09). To keep this patch small, we'll leave the name 'actionbyfile' in overrides.py. It will be renamed in the next patch.
author Martin von Zweigbergk <martinvonz@google.com>
date Thu, 11 Dec 2014 22:07:41 -0800
parents b46b9865dd08
children 18ab5e5955df
line wrap: on
line diff
--- a/mercurial/merge.py	Thu Dec 11 21:58:49 2014 -0800
+++ b/mercurial/merge.py	Thu Dec 11 22:07:41 2014 -0800
@@ -621,12 +621,6 @@
         fractions = _forgetremoved(wctx, mctx, branchmerge)
         actions.update(fractions)
 
-    # 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))
-
     return actions, diverge, renamedelete
 
 def batchremove(repo, actions):
@@ -1069,9 +1063,15 @@
             followcopies = True
 
         ### calculate phase
-        actions, diverge, renamedelete = calculateupdates(
+        actionbyfile, diverge, renamedelete = calculateupdates(
             repo, wc, p2, pas, branchmerge, force, partial, mergeancestor,
             followcopies)
+        # Convert to dictionary-of-lists format
+        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():
+            if m not in actions:
+                actions[m] = []
+            actions[m].append((f, args, msg))
 
         if not util.checkcase(repo.path):
             # check collision between files only in p2 for clean update