Mercurial > hg
changeset 43454:c8e5b3094a1d
repoview: avoid wrapping changelog if there's nothing to filter
This simplifies the code a bit by moving the optimizaton for no
filtered revisions to one place. I assume it also makes working with
repos without obsmarkers a little faster, but it doesn't seem
significant.
Differential Revision: https://phab.mercurial-scm.org/D7248
author | Martin von Zweigbergk <martinvonz@google.com> |
---|---|
date | Tue, 05 Nov 2019 15:00:44 -0800 |
parents | 61c372100008 |
children | 6792da448437 |
files | mercurial/repoview.py |
diffstat | 1 files changed, 4 insertions(+), 8 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/repoview.py Tue Nov 05 14:33:02 2019 -0800 +++ b/mercurial/repoview.py Tue Nov 05 15:00:44 2019 -0800 @@ -26,7 +26,6 @@ obsolete, phases, pycompat, - revlog, tags as tagsmod, util, ) @@ -241,9 +240,6 @@ 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)): @@ -280,7 +276,7 @@ return revs def headrevs(self, revs=None): - if revs is None and self.filteredrevs: + if revs is None: try: return self.index.headrevsfiltered(self.filteredrevs) # AttributeError covers non-c-extension environments and @@ -288,8 +284,7 @@ except AttributeError: return self._headrevs() - if self.filteredrevs: - revs = self._checknofilteredinrevs(revs) + revs = self._checknofilteredinrevs(revs) return super(filteredchangelog, self).headrevs(revs) def strip(self, *args, **kwargs): @@ -404,7 +399,8 @@ cl = None # could have been made None by the previous if if cl is None: - cl = wrapchangelog(unfichangelog, revs) + # Only filter if there's something to filter + cl = wrapchangelog(unfichangelog, revs) if revs else unfichangelog object.__setattr__(self, r'_clcache', cl) object.__setattr__(self, r'_clcachekey', newkey) return cl