[PATCH 3 of 6] merge: remove uses of manifest.matches

Durham Goode durham at fb.com
Fri Mar 3 14:34:18 EST 2017


# HG changeset patch
# User Durham Goode <durham at fb.com>
# Date 1488519936 28800
#      Thu Mar 02 21:45:36 2017 -0800
# Node ID 883bb49a3b40609074d56257aab7619f0c306efc
# Parent  4cebdd029399cf7c3b0fff73faf1f41af0e895d1
merge: remove uses of manifest.matches

This gets rid of the manifest.matches calls in merge.py in favor of the new api.
This is part of getting rid of manifest.matches since it is O(manifest).

diff --git a/mercurial/merge.py b/mercurial/merge.py
--- a/mercurial/merge.py
+++ b/mercurial/merge.py
@@ -818,11 +818,7 @@ def manifestmerge(repo, wctx, p2, pa, br
         if any(wctx.sub(s).dirty() for s in wctx.substate):
             m1['.hgsubstate'] = modifiednodeid
 
-    # Compare manifests
-    if matcher is not None:
-        m1 = m1.matches(matcher)
-        m2 = m2.matches(matcher)
-    diff = m1.diff(m2)
+    diff = m1.diff(m2, match=matcher)
 
     actions = {}
     for f, ((n1, fl1), (n2, fl2)) in diff.iteritems():
@@ -858,7 +854,7 @@ def manifestmerge(repo, wctx, p2, pa, br
                 pass # we'll deal with it on m2 side
             elif f in movewithdir: # directory rename, move local
                 f2 = movewithdir[f]
-                if f2 in m2:
+                if f2 in m2 and (not matcher or matcher(f2)):
                     actions[f2] = ('m', (f, f2, None, True, pa.node()),
                                    "remote directory rename, both created")
                 else:
@@ -887,7 +883,7 @@ def manifestmerge(repo, wctx, p2, pa, br
                 pass # we'll deal with it on m1 side
             elif f in movewithdir:
                 f2 = movewithdir[f]
-                if f2 in m1:
+                if f2 in m1 and (not matcher or matcher(f2)):
                     actions[f2] = ('m', (f2, f, None, False, pa.node()),
                                    "local directory rename, both created")
                 else:
@@ -895,7 +891,7 @@ def manifestmerge(repo, wctx, p2, pa, br
                                    "local directory rename - get from " + f)
             elif f in copy:
                 f2 = copy[f]
-                if f2 in m2:
+                if f2 in m2 and (not matcher or matcher(f2)):
                     actions[f] = ('m', (f2, f, f2, False, pa.node()),
                                   "remote copied from " + f2)
                 else:
@@ -927,7 +923,7 @@ def manifestmerge(repo, wctx, p2, pa, br
                         # new file added in a directory that was moved
                         df = dirmove[d] + f[len(d):]
                         break
-                if df in m1:
+                if df in m1 and (not matcher or matcher(df)):
                     actions[df] = ('m', (df, f, f, False, pa.node()),
                             "local directory rename - respect move from " + f)
                 elif acceptremote:


More information about the Mercurial-devel mailing list