merge: move partial filtering out of manifest merge
authorMatt Mackall <mpm@selenic.com>
Tue, 26 Sep 2006 16:21:52 -0500
changeset 3162 a9e75b371315
parent 3161 84561ea8711e
child 3163 1605e336d229
child 3171 706277866251
merge: move partial filtering out of manifest merge
mercurial/merge.py
--- a/mercurial/merge.py	Tue Sep 26 16:04:07 2006 -0500
+++ b/mercurial/merge.py	Tue Sep 26 16:21:52 2006 -0500
@@ -171,7 +171,12 @@
 
     return copy
 
-def manifestmerge(ui, m1, m2, ma, overwrite, backwards, partial):
+def filtermanifest(man, partial):
+    if partial:
+        for k in man.keys():
+            if not partial(k): del man[k]
+
+def manifestmerge(ui, m1, m2, ma, overwrite, backwards):
     """
     Merge manifest m1 with m2 using ancestor ma and generate merge action list
     """
@@ -187,13 +192,6 @@
         ui.debug(" %s: %s -> %s\n" % (f, msg, m))
         action.append((f, m) + args)
 
-    # Filter manifests
-    if partial:
-        for f in m1.keys():
-            if not partial(f): del m1[f]
-        for f in m2.keys():
-            if not partial(f): del m2[f]
-
     # Compare manifests
     for f, n in m1.iteritems():
         if f in m2:
@@ -363,6 +361,8 @@
     copy = {}
 
     m1 = workingmanifest(repo, m1, status)
+    filtermanifest(m1, partial)
+    filtermanifest(m2, partial)
 
     if not force:
         checkunknown(repo, m2, status)
@@ -371,7 +371,7 @@
     if not (backwards or overwrite):
         copy = findcopies(repo, m1, m2, repo.changelog.rev(pa))
 
-    action += manifestmerge(repo.ui, m1, m2, ma, overwrite, backwards, partial)
+    action += manifestmerge(repo.ui, m1, m2, ma, overwrite, backwards)
     del m1, m2, ma
 
     ### apply phase