changeset 24292:b7add2ebef9e

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.
author Martin von Zweigbergk <martinvonz@google.com>
date Wed, 11 Mar 2015 08:28:56 -0700
parents 760a86865f80
children 30e9ee203846
files mercurial/manifest.py
diffstat 1 files changed, 2 insertions(+), 5 deletions(-) [+]
line wrap: on
line diff
--- 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