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