manifest: use rev() instead of nodemap.__contains__
authorGregory Szorc <gregory.szorc@gmail.com>
Fri, 10 Aug 2018 16:01:19 -0700
changeset 39246 61700d525a3b
parent 39245 071f97d03acb
child 39247 f4d4bd8c8911
manifest: use rev() instead of nodemap.__contains__ nodemap is an implementation detail of revlogs and isn't appropriate to expose on the manifest storage API. While revlogs don't have a __contains__, they do have lookup() for resolving a value to a node. And this calls rev(), whose API is documented to raise LookupError if a node doesn't exist. And the parameters to LookupError are identical to what was being raised here. So this change should be backwards compatible. Differential Revision: https://phab.mercurial-scm.org/D4279
mercurial/manifest.py
--- a/mercurial/manifest.py	Fri Aug 10 15:06:41 2018 -0700
+++ b/mercurial/manifest.py	Fri Aug 10 16:01:19 2018 -0700
@@ -1453,10 +1453,10 @@
         if tree:
             if self._revlog._treeondisk:
                 if verify:
-                    dirlog = self.getstorage(tree)
-                    if node not in dirlog.nodemap:
-                        raise LookupError(node, dirlog.indexfile,
-                                          _('no node'))
+                    # Side-effect is LookupError is raised if node doesn't
+                    # exist.
+                    self.getstorage(tree).rev(node)
+
                 m = treemanifestctx(self, tree, node)
             else:
                 raise error.Abort(
@@ -1464,9 +1464,9 @@
                           "manifest") % tree)
         else:
             if verify:
-                if node not in self._revlog.nodemap:
-                    raise LookupError(node, self._revlog.indexfile,
-                                      _('no node'))
+                # Side-effect is LookupError is raised if node doesn't exist.
+                self._revlog.rev(node)
+
             if self._treemanifests:
                 m = treemanifestctx(self, '', node)
             else: