# HG changeset patch # User Martin von Zweigbergk # Date 1426087736 25200 # Node ID b7add2ebef9e41b91a1cd16a0cf149f517527cf0 # Parent 760a86865f806024af5f4ec45ab7b96e334122dc 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. diff -r 760a86865f80 -r b7add2ebef9e 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