[PATCH 6 of 6] changectx: issue a FilteredRepoLookupError when applicable
Augie Fackler
raf at durin42.com
Fri Oct 17 09:33:26 CDT 2014
On Thu, Oct 16, 2014 at 02:30:11AM -0700, Pierre-Yves David wrote:
> # 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
Looks like good incremental improvement. Queued.
>
> 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
> _______________________________________________
> Mercurial-devel mailing list
> Mercurial-devel at selenic.com
> http://selenic.com/mailman/listinfo/mercurial-devel
More information about the Mercurial-devel
mailing list