[PATCH 3 of 6] repoview: add a FilteredIndexError class

Pierre-Yves David pierre-yves.david at ens-lyon.org
Thu Oct 16 04:30:08 CDT 2014


# HG changeset patch
# User Pierre-Yves David <pierre-yves.david at fb.com>
# Date 1413417764 25200
#      Wed Oct 15 17:02:44 2014 -0700
# Node ID 2dabd90d3490e271f164a8992b86550dc3e0dfd3
# Parent  1e638fa45fbcdaa23e1b89f6be9cd1658adf62a3
repoview: add a FilteredIndexError class

This exception is a more precise IndexError that will allow us to issue special
message when we end up accessing a filtered revision.

diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -194,29 +194,29 @@ class changelog(revlog.revlog):
         return r
 
     def node(self, rev):
         """filtered version of revlog.node"""
         if rev in self.filteredrevs:
-            raise IndexError(rev)
+            raise error.FilteredIndexError(rev)
         return super(changelog, self).node(rev)
 
     def linkrev(self, rev):
         """filtered version of revlog.linkrev"""
         if rev in self.filteredrevs:
-            raise IndexError(rev)
+            raise error.FilteredIndexError(rev)
         return super(changelog, self).linkrev(rev)
 
     def parentrevs(self, rev):
         """filtered version of revlog.parentrevs"""
         if rev in self.filteredrevs:
-            raise IndexError(rev)
+            raise error.FilteredIndexError(rev)
         return super(changelog, self).parentrevs(rev)
 
     def flags(self, rev):
         """filtered version of revlog.flags"""
         if rev in self.filteredrevs:
-            raise IndexError(rev)
+            raise error.FilteredIndexError(rev)
         return super(changelog, self).flags(rev)
 
     def delayupdate(self):
         "delay visibility of index updates to other readers"
         self._delayed = True
diff --git a/mercurial/error.py b/mercurial/error.py
--- a/mercurial/error.py
+++ b/mercurial/error.py
@@ -14,10 +14,13 @@ imports.
 # Do not import anything here, please
 
 class RevlogError(Exception):
     pass
 
+class FilteredIndexError(IndexError):
+    pass
+
 class LookupError(RevlogError, KeyError):
     def __init__(self, name, index, message):
         self.name = name
         if isinstance(name, str) and len(name) == 20:
             from node import short


More information about the Mercurial-devel mailing list