manifestdict: inline _intersectfiles()
authorMartin von Zweigbergk <martinvonz@google.com>
Wed, 08 Apr 2015 10:01:31 -0700
changeset 24666 3092885b5b32
parent 24665 5326820a2952
child 24667 19c5b0913960
manifestdict: inline _intersectfiles() The _intersectfiles() method is only called from one place, it's pretty short, and its caller has to be aware when it's appropriate to call it (when the number of files in the matcher is not too large), so let's inline it.
mercurial/manifest.py
--- a/mercurial/manifest.py	Wed Apr 08 10:03:59 2015 -0700
+++ b/mercurial/manifest.py	Wed Apr 08 10:01:31 2015 -0700
@@ -198,17 +198,6 @@
     def keys(self):
         return list(self.iterkeys())
 
-    def _intersectfiles(self, files):
-        '''make a new lazymanifest with the intersection of self with files
-
-        The algorithm assumes that files is much smaller than self.'''
-        ret = manifestdict()
-        lm = self._lm
-        for fn in files:
-            if fn in lm:
-                ret._lm[fn] = lm[fn]
-        return ret
-
     def filesnotin(self, m2):
         '''Set of files in this manifest that are not in the other'''
         files = set(self)
@@ -265,7 +254,12 @@
         files = match.files()
         if (len(files) < 100 and (match.isexact() or
             (not match.anypats() and util.all(fn in self for fn in files)))):
-            return self._intersectfiles(files)
+            m = manifestdict()
+            lm = self._lm
+            for fn in match.files():
+                if fn in lm:
+                    m._lm[fn] = lm[fn]
+            return m
 
         m = manifestdict('')
         m._lm = self._lm.filtercopy(match)