diff --git a/mercurial/changelog.py b/mercurial/changelog.py --- a/mercurial/changelog.py +++ b/mercurial/changelog.py @@ -405,18 +405,6 @@ class changelog(revlog.revlog): self.filteredrevs = frozenset() self._copiesstorage = opener.options.get(b'copies-storage') - def __iter__(self): - """filtered version of revlog.__iter__""" - if len(self.filteredrevs) == 0: - return revlog.revlog.__iter__(self) - - def filterediter(): - for i in pycompat.xrange(len(self)): - if i not in self.filteredrevs: - yield i - - return filterediter() - def revs(self, start=0, stop=None): """filtered version of revlog.revs""" for i in super(changelog, self).revs(start, stop): diff --git a/mercurial/repoview.py b/mercurial/repoview.py --- a/mercurial/repoview.py +++ b/mercurial/repoview.py @@ -21,6 +21,7 @@ from . import ( obsolete, phases, pycompat, + revlog, tags as tagsmod, util, ) @@ -233,6 +234,19 @@ def wrapchangelog(unfichangelog, filtere """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: + return revlog.revlog.__iter__(self) + + + def filterediter(): + for i in pycompat.xrange(len(self)): + if i not in self.filteredrevs: + yield i + + return filterediter() + cl.__class__ = filteredchangelog return cl