[PATCH 6 of 6] changectx: issue a FilteredRepoLookupError when applicable
Pierre-Yves David
pierre-yves.david at ens-lyon.org
Thu Oct 16 04:30:11 CDT 2014
# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1413430664 25200
# Wed Oct 15 20:37:44 2014 -0700
# Node ID 1f218b91a064f01a26d2839b5dfaf4873c036a09
# Parent 56cca5ebc3c92d9affecd349fd0b01c4dca9128e
changectx: issue a FilteredRepoLookupError when applicable
We capture FilteredxxxError and issue a FilteredRepoLookupError instead with a
sightly different messsge. The message will likely get more improvement in the
future.
error: filtered revision '4'
diff --git a/mercurial/context.py b/mercurial/context.py
--- a/mercurial/context.py
+++ b/mercurial/context.py
@@ -398,10 +398,12 @@ class changectx(basectx):
if len(changeid) == 20:
try:
self._node = changeid
self._rev = repo.changelog.rev(changeid)
return
+ except error.FilteredRepoLookupError:
+ raise
except LookupError:
pass
try:
r = int(changeid)
@@ -413,18 +415,22 @@ class changectx(basectx):
if r < 0 or r >= l:
raise ValueError
self._rev = r
self._node = repo.changelog.node(r)
return
+ except error.FilteredIndexError:
+ raise
except (ValueError, OverflowError, IndexError):
pass
if len(changeid) == 40:
try:
self._node = bin(changeid)
self._rev = repo.changelog.rev(self._node)
return
+ except error.FilteredLookupError:
+ raise
except (TypeError, LookupError):
pass
if changeid in repo._bookmarks:
self._node = repo._bookmarks[changeid]
@@ -436,14 +442,16 @@ class changectx(basectx):
return
try:
self._node = repo.branchtip(changeid)
self._rev = repo.changelog.rev(self._node)
return
+ except error.FilteredRepoLookupError:
+ raise
except error.RepoLookupError:
pass
- self._node = repo.changelog._partialmatch(changeid)
+ self._node = repo.unfiltered().changelog._partialmatch(changeid)
if self._node is not None:
self._rev = repo.changelog.rev(self._node)
return
# lookup failed
@@ -457,10 +465,14 @@ class changectx(basectx):
try:
if len(changeid) == 20:
changeid = hex(changeid)
except TypeError:
pass
+ except (error.FilteredIndexError, error.FilteredLookupError,
+ error.FilteredRepoLookupError):
+ raise error.FilteredRepoLookupError(_("filtered revision '%s'")
+ % changeid)
except IndexError:
pass
raise error.RepoLookupError(
_("unknown revision '%s'") % changeid)
diff --git a/tests/test-hgweb-commands.t b/tests/test-hgweb-commands.t
--- a/tests/test-hgweb-commands.t
+++ b/tests/test-hgweb-commands.t
@@ -2173,11 +2173,11 @@ proper status for filtered revision
Status: 404 Not Found\r (esc)
ETag: *\r (glob) (esc)
Content-Type: text/plain; charset=ascii\r (esc)
\r (esc)
- error: unknown revision '5'
+ error: filtered revision '5'
(filtered rev)
@@ -2187,11 +2187,11 @@ proper status for filtered revision
Status: 404 Not Found\r (esc)
ETag: *\r (glob) (esc)
Content-Type: text/plain; charset=ascii\r (esc)
\r (esc)
- error: unknown revision '4'
+ error: filtered revision '4'
filtered '0' changeset
(create new root)
$ hg up null
diff --git a/tests/test-log.t b/tests/test-log.t
--- a/tests/test-log.t
+++ b/tests/test-log.t
@@ -1393,11 +1393,11 @@ enable obsolete to test hidden feature
0:9f758d63dcde62d547ebfb08e1e7ee96535f2b05
$ hg log --template='{rev}:{node}\n' --hidden
1:a765632148dc55d38c35c4f247c618701886cb2f
0:9f758d63dcde62d547ebfb08e1e7ee96535f2b05
$ hg log -r a
- abort: unknown revision 'a'!
+ abort: filtered revision 'a'!
[255]
test that parent prevent a changeset to be hidden
$ hg up 1 -q --hidden
diff --git a/tests/test-obsolete.t b/tests/test-obsolete.t
--- a/tests/test-obsolete.t
+++ b/tests/test-obsolete.t
@@ -182,11 +182,11 @@ check that various commands work well wi
5:5601fb93a350 (draft) [tip ] add new_3_c
$ hg log -r 6
abort: unknown revision '6'!
[255]
$ hg log -r 4
- abort: unknown revision '4'!
+ abort: filtered revision '4'!
[255]
Check that public changeset are not accounted as obsolete:
$ hg --hidden phase --public 2
More information about the Mercurial-devel
mailing list