##// END OF EJS Templates
phases: add a getrevset method to phasecache...
Jun Wu -
r31016:bf81d3b7 default
parent child Browse files
Show More
@@ -115,6 +115,7 b' from .node import ('
115 from . import (
115 from . import (
116 encoding,
116 encoding,
117 error,
117 error,
118 smartset,
118 )
119 )
119
120
120 allphases = public, draft, secret = range(3)
121 allphases = public, draft, secret = range(3)
@@ -170,6 +171,27 b' class phasecache(object):'
170 self.filterunknown(repo)
171 self.filterunknown(repo)
171 self.opener = repo.svfs
172 self.opener = repo.svfs
172
173
174 def getrevset(self, repo, phases):
175 """return a smartset for the given phases"""
176 self.loadphaserevs(repo) # ensure phase's sets are loaded
177
178 if self._phasesets and all(self._phasesets[p] is not None
179 for p in phases):
180 # fast path - use _phasesets
181 revs = self._phasesets[phases[0]]
182 if len(phases) > 1:
183 revs = revs.copy() # only copy when needed
184 for p in phases[1:]:
185 revs.update(self._phasesets[p])
186 if repo.changelog.filteredrevs:
187 revs = revs - repo.changelog.filteredrevs
188 return smartset.baseset(revs)
189 else:
190 # slow path - enumerate all revisions
191 phase = self.phase
192 revs = (r for r in repo if phase(repo, r) in phases)
193 return smartset.generatorset(revs, iterasc=True)
194
173 def copy(self):
195 def copy(self):
174 # Shallow copy meant to ensure isolation in
196 # Shallow copy meant to ensure isolation in
175 # advance/retractboundary(), nothing more.
197 # advance/retractboundary(), nothing more.
General Comments 0
You need to be logged in to leave comments. Login now