manifest: rewrite find(node, f) in terms of read(node)
authorMartin von Zweigbergk <martinvonz@google.com>
Wed, 11 Mar 2015 08:28:56 -0700
changeset 24292 b7add2ebef9e
parent 24291 760a86865f80
child 24293 30e9ee203846
manifest: rewrite find(node, f) in terms of read(node) Since find() now always works with a full manifest, we can simplify by calling read() to give us that manifest. That way, we also populate the manifest cache. However, now that we no longer parse the manifest text into a Python type (thanks, lazymanifest/Augie), the cost of parsing (scanning for newlines, really) is small enough that it seems generally drowned by revlog reading.
mercurial/manifest.py
--- a/mercurial/manifest.py	Thu Feb 26 22:54:13 2015 +0900
+++ b/mercurial/manifest.py	Wed Mar 11 08:28:56 2015 -0700
@@ -350,12 +350,9 @@
     def find(self, node, f):
         '''look up entry for a single file efficiently.
         return (node, flags) pair if found, (None, None) if not.'''
-        if node in self._mancache:
-            m = self._mancache[node][0]
-            return m.get(f), m.flags(f)
-        text = self.revision(node)
+        m = self.read(node)
         try:
-            return manifestdict(text).find(f)
+            return m.find(f)
         except KeyError:
             return None, None