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.
--- 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