D4279: manifest: use rev() instead of nodemap.__contains__

indygreg (Gregory Szorc) phabricator at mercurial-scm.org
Mon Aug 13 16:56:13 UTC 2018


indygreg created this revision.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.

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

REPOSITORY
  rHG Mercurial

REVISION DETAIL
  https://phab.mercurial-scm.org/D4279

AFFECTED FILES
  mercurial/manifest.py

CHANGE DETAILS

diff --git a/mercurial/manifest.py b/mercurial/manifest.py
--- a/mercurial/manifest.py
+++ b/mercurial/manifest.py
@@ -1453,20 +1453,20 @@
         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(
                         _("cannot ask for manifest directory '%s' in a flat "
                           "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:



To: indygreg, #hg-reviewers
Cc: mercurial-devel


More information about the Mercurial-devel mailing list