context: translate FilteredIndex/LookupError at repo[changeid] (API)
This partially backs out
ecd3f6909184. It seems layering violation for
repo[changeid] to raise storage-level exceptions transparently. Otherwise,
we would have to rewrite callers to catch all of them.
try:
repo[rev_or_node]
except (error.RepoLookupError, error.FilteredIndexError,
error.FilteredLookupError):
pass
This would also fix filectx._changectx(), which catches FilteredRepoLookupError
to fall back to the unfiltered path.
--- a/mercurial/context.py Thu Apr 19 20:22:33 2018 +0900
+++ b/mercurial/context.py Thu Apr 19 19:55:51 2018 +0900
@@ -497,8 +497,10 @@
changeid = hex(changeid)
except TypeError:
pass
- except (error.FilteredIndexError, error.FilteredLookupError,
- error.FilteredRepoLookupError):
+ except (error.FilteredIndexError, error.FilteredLookupError):
+ raise error.FilteredRepoLookupError(_("filtered revision '%s'")
+ % changeid)
+ except error.FilteredRepoLookupError:
raise
except IndexError:
pass
--- a/mercurial/localrepo.py Thu Apr 19 20:22:33 2018 +0900
+++ b/mercurial/localrepo.py Thu Apr 19 19:55:51 2018 +0900
@@ -850,8 +850,7 @@
try:
self[changeid]
return True
- except (error.RepoLookupError, error.FilteredIndexError,
- error.FilteredLookupError):
+ except error.RepoLookupError:
return False
def __nonzero__(self):