manifestdict: add a new method to intersect with a set of files
authorSiddharth Agarwal <sid0@fb.com>
Sat, 12 Jul 2014 17:57:25 -0700
changeset 21879 090dcaaf3fff
parent 21878 e2530d4a47c1
child 21880 e6754f5e4cf7
manifestdict: add a new method to intersect with a set of files This is meant to be used when the set of files is known in advance, e.g. with a match object with no patterns.
mercurial/manifest.py
--- 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, "")