diff mercurial/repoview.py @ 43445:c093fb81404f

repoview: move changelog.__iter__() override to filteredchangelog Differential Revision: https://phab.mercurial-scm.org/D7239
author Martin von Zweigbergk <martinvonz@google.com>
date Tue, 05 Nov 2019 14:12:10 -0800
parents c470e699cd00
children 5ade47284dda
line wrap: on
line diff
--- a/mercurial/repoview.py	Tue Nov 05 14:11:30 2019 -0800
+++ b/mercurial/repoview.py	Tue Nov 05 14:12:10 2019 -0800
@@ -21,6 +21,7 @@
     obsolete,
     phases,
     pycompat,
+    revlog,
     tags as tagsmod,
     util,
 )
@@ -233,6 +234,19 @@
             """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