D4036: revlog: use specialized exception for ambiguous prefix lookup
martinvonz (Martin von Zweigbergk)
phabricator at mercurial-scm.org
Wed Aug 1 21:59:01 UTC 2018
martinvonz created this revision.
Herald added a reviewer: indygreg.
Herald added a subscriber: mercurial-devel.
Herald added a reviewer: hg-reviewers.
REVISION SUMMARY
It's useful to be able to catch a specific exception for this
case. We'll use it soon.
REPOSITORY
rHG Mercurial
REVISION DETAIL
https://phab.mercurial-scm.org/D4036
AFFECTED FILES
mercurial/error.py
mercurial/localrepo.py
mercurial/revlog.py
mercurial/scmutil.py
CHANGE DETAILS
diff --git a/mercurial/scmutil.py b/mercurial/scmutil.py
--- a/mercurial/scmutil.py
+++ b/mercurial/scmutil.py
@@ -480,8 +480,8 @@
def isrevsymbol(repo, symbol):
"""Checks if a symbol exists in the repo.
- See revsymbol() for details. Raises error.LookupError if the symbol is an
- ambiguous nodeid prefix.
+ See revsymbol() for details. Raises error.AmbiguousPrefixLookupError if the
+ symbol is an ambiguous nodeid prefix.
"""
try:
revsymbol(repo, symbol)
diff --git a/mercurial/revlog.py b/mercurial/revlog.py
--- a/mercurial/revlog.py
+++ b/mercurial/revlog.py
@@ -91,6 +91,7 @@
RevlogError = error.RevlogError
LookupError = error.LookupError
+AmbiguousPrefixLookupError = error.AmbiguousPrefixLookupError
CensoredNodeError = error.CensoredNodeError
ProgrammingError = error.ProgrammingError
@@ -1785,8 +1786,8 @@
# parsers.c radix tree lookup gave multiple matches
# fast path: for unfiltered changelog, radix tree is accurate
if not getattr(self, 'filteredrevs', None):
- raise LookupError(id, self.indexfile,
- _('ambiguous identifier'))
+ raise AmbiguousPrefixLookupError(id, self.indexfile,
+ _('ambiguous identifier'))
# fall through to slow path that filters hidden revisions
except (AttributeError, ValueError):
# we are pure python, or key was too short to search radix tree
@@ -1807,8 +1808,8 @@
if len(nl) == 1 and not maybewdir:
self._pcache[id] = nl[0]
return nl[0]
- raise LookupError(id, self.indexfile,
- _('ambiguous identifier'))
+ raise AmbiguousPrefixLookupError(id, self.indexfile,
+ _('ambiguous identifier'))
if maybewdir:
raise error.WdirUnsupported
return None
diff --git a/mercurial/localrepo.py b/mercurial/localrepo.py
--- a/mercurial/localrepo.py
+++ b/mercurial/localrepo.py
@@ -860,7 +860,8 @@
def __contains__(self, changeid):
"""True if the given changeid exists
- error.LookupError is raised if an ambiguous node specified.
+ error.AmbiguousPrefixLookupError is raised if an ambiguous node
+ specified.
"""
try:
self[changeid]
diff --git a/mercurial/error.py b/mercurial/error.py
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -58,6 +58,9 @@
def __str__(self):
return RevlogError.__str__(self)
+class AmbiguousPrefixLookupError(LookupError):
+ pass
+
class FilteredLookupError(LookupError):
pass
To: martinvonz, indygreg, #hg-reviewers
Cc: mercurial-devel
More information about the Mercurial-devel
mailing list