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