From patchwork Tue Sep 23 19:28:27 2014 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: [2,of,4,V2] revert: add a fullreposet class From: Pierre-Yves David X-Patchwork-Id: 5919 Message-Id: <52b6a97deaae46cd25bd.1411500507@marginatus.alto.octopoid.net> To: mercurial-devel@selenic.com Cc: Pierre-Yves David Date: Tue, 23 Sep 2014 12:28:27 -0700 # HG changeset patch # User Pierre-Yves David # Date 1398823575 25200 # Tue Apr 29 19:06:15 2014 -0700 # Node ID 52b6a97deaae46cd25bd342c35c74edf7a577c3d # Parent 57f0bf2b4380fa517321f759e910785953997e8f revert: add a fullreposet class Every revset evaluation starts from `subset = spanset(repo)` and a lot of revset predicates build a `spansetrepo` for their internal needs. `spanset` is a generic class that can handle any situation. As a result a lot of operation between spanset result in an `orderedlazyset`, a safe object but suboptimal in may situation. So we introduce a `fullreposet` class where some of the operation will be overwritten to produce more interesting results. diff --git a/mercurial/revset.py b/mercurial/revset.py --- a/mercurial/revset.py +++ b/mercurial/revset.py @@ -2845,7 +2845,16 @@ class spanset(_orderedsetmixin): return self._start >= self._end def filter(self, l): return orderedlazyset(self, l, ascending=self.isascending()) +class fullreposet(spanset): + """a set containing all revisions in the repo + + This class exists to host special optimisation. + """ + + def __init__(self, repo): + super(fullreposet, self).__init__(repo) + # tell hggettext to extract docstrings from these functions: i18nfunctions = symbols.values()