mercurial/repoview.py
changeset 35492 3ad582b2895c
parent 35249 d4ad9d695a9e
child 35493 3c9c05a38d78
--- a/mercurial/repoview.py	Sun Dec 24 11:46:13 2017 -0700
+++ b/mercurial/repoview.py	Fri Dec 22 17:57:11 2017 +0530
@@ -187,11 +187,14 @@
     subclasses of `localrepo`. Eg: `bundlerepo` or `statichttprepo`.
     """
 
-    def __init__(self, repo, filtername):
+    def __init__(self, repo, filtername, visibilityexceptions=None):
         object.__setattr__(self, r'_unfilteredrepo', repo)
         object.__setattr__(self, r'filtername', filtername)
         object.__setattr__(self, r'_clcachekey', None)
         object.__setattr__(self, r'_clcache', None)
+        # revs which are exceptions and must not be hidden
+        object.__setattr__(self, r'_visibilityexceptions',
+                           visibilityexceptions)
 
     # not a propertycache on purpose we shall implement a proper cache later
     @property
@@ -227,11 +230,11 @@
         """Return an unfiltered version of a repo"""
         return self._unfilteredrepo
 
-    def filtered(self, name):
+    def filtered(self, name, visibilityexceptions=None):
         """Return a filtered version of a repository"""
-        if name == self.filtername:
+        if name == self.filtername and not visibilityexceptions:
             return self
-        return self.unfiltered().filtered(name)
+        return self.unfiltered().filtered(name, visibilityexceptions)
 
     def __repr__(self):
         return r'<%s:%s %r>' % (self.__class__.__name__,