mercurial/manifest.py
changeset 21879 090dcaaf3fff
parent 20075 f8737bce736a
child 22408 dc97e04c12ad
--- a/mercurial/manifest.py	Sat Jul 12 18:31:18 2014 -0700
+++ b/mercurial/manifest.py	Sat Jul 12 17:57:25 2014 -0700
@@ -25,6 +25,18 @@
         self._flags[f] = flags
     def copy(self):
         return manifestdict(self, dict.copy(self._flags))
+    def intersectfiles(self, files):
+        '''make a new manifestdict with the intersection of self with files
+
+        The algorithm assumes that files is much smaller than self.'''
+        ret = manifestdict()
+        for fn in files:
+            if fn in self:
+                ret[fn] = self[fn]
+                flags = self._flags.get(fn, None)
+                if flags:
+                    ret._flags[fn] = flags
+        return ret
     def flagsdiff(self, d2):
         return dicthelpers.diff(self._flags, d2._flags, "")