Patchwork [4,of,6,V2] merge: let _forgetremoved() work on the file->action dict

login
register
mail settings
Submitter Martin von Zweigbergk
Date Dec. 22, 2014, 9:36 p.m.
Message ID <fa09171d55b46538a3f6.1419284180@martinvonz.mtv.corp.google.com>
Download mbox | patch
Permalink /patch/7196/
State Accepted
Headers show

Comments

Martin von Zweigbergk - Dec. 22, 2014, 9:36 p.m.
# HG changeset patch
# User Martin von Zweigbergk <martinvonz@google.com>
# Date 1418363929 28800
#      Thu Dec 11 21:58:49 2014 -0800
# Node ID fa09171d55b46538a3f6c0cba139a0b328cbd97e
# Parent  8ade20976e1484ad0edffe4e13949f442dce3a5d
merge: let _forgetremoved() work on the file->action dict

By moving the conversion from the file->action dict after
_forgetremoved(), we make that method shorter by removing the need for
the confusing 'xactions' variable.

Patch

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -318,20 +318,20 @@ 
     as removed.
     """
 
-    ractions = []
-    factions = xactions = []
+    actions = {}
+    m = 'f'
     if branchmerge:
-        xactions = ractions
+        m = 'r'
     for f in wctx.deleted():
         if f not in mctx:
-            xactions.append((f, None, "forget deleted"))
+            actions[f] = m, None, "forget deleted"
 
     if not branchmerge:
         for f in wctx.removed():
             if f not in mctx:
-                factions.append((f, None, "forget removed"))
+                actions[f] = 'f', None, "forget removed"
 
-    return ractions, factions
+    return actions
 
 def _checkcollision(repo, wmf, actions):
     # build provisional merged manifest up
@@ -617,17 +617,16 @@ 
 
     _resolvetrivial(repo, wctx, mctx, ancestors[0], actions)
 
+    if wctx.rev() is None:
+        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))
 
-    if wctx.rev() is None:
-        ractions, factions = _forgetremoved(wctx, mctx, branchmerge)
-        actions['r'].extend(ractions)
-        actions['f'].extend(factions)
-
     return actions, diverge, renamedelete
 
 def batchremove(repo, actions):