diff --git a/mercurial/changelog.py b/mercurial/changelog.py
--- a/mercurial/changelog.py
+++ b/mercurial/changelog.py
@@ -405,10 +405,6 @@ class changelog(revlog.revlog):
         self.filteredrevs = frozenset()
         self._copiesstorage = opener.options.get(b'copies-storage')
 
-    def __contains__(self, rev):
-        """filtered version of revlog.__contains__"""
-        return 0 <= rev < len(self) and rev not in self.filteredrevs
-
     def __iter__(self):
         """filtered version of revlog.__iter__"""
         if len(self.filteredrevs) == 0:
diff --git a/mercurial/repoview.py b/mercurial/repoview.py
--- a/mercurial/repoview.py
+++ b/mercurial/repoview.py
@@ -229,6 +229,10 @@ def wrapchangelog(unfichangelog, filtere
                 if i not in self.filteredrevs:
                     return i
 
+        def __contains__(self, rev):
+            """filtered version of revlog.__contains__"""
+            return 0 <= rev < len(self) and rev not in self.filteredrevs
+
     cl.__class__ = filteredchangelog
 
     return cl