Show More
@@ -243,49 +243,46 b' class phasecache(object):' | |||||
243 | """return a smartset for the given phases""" |
|
243 | """return a smartset for the given phases""" | |
244 | self.loadphaserevs(repo) # ensure phase's sets are loaded |
|
244 | self.loadphaserevs(repo) # ensure phase's sets are loaded | |
245 | phases = set(phases) |
|
245 | phases = set(phases) | |
|
246 | publicphase = public in phases | |||
246 |
|
247 | |||
247 |
if public |
|
248 | if publicphase: | |
|
249 | # In this case, phases keeps all the *other* phases. | |||
|
250 | phases = set(allphases).difference(phases) | |||
|
251 | if not phases: | |||
|
252 | return smartset.fullreposet(repo) | |||
|
253 | ||||
248 |
|
|
254 | # fast path: _phasesets contains the interesting sets, | |
249 |
|
|
255 | # might only need a union and post-filtering. | |
250 |
|
|
256 | if len(phases) == 1: | |
251 |
|
|
257 | [p] = phases | |
252 |
|
|
258 | revs = self._phasesets[p] | |
253 |
|
|
259 | else: | |
|
260 | # revs has the revisions in all *other* phases. | |||
254 |
|
|
261 | revs = set.union(*[self._phasesets[p] for p in phases]) | |
|
262 | ||||
|
263 | def _addwdir(wdirsubset, wdirrevs): | |||
|
264 | if wdirrev in wdirsubset and repo[None].phase() in phases: | |||
|
265 | # The working dir would never be in the # cache, but it was in | |||
|
266 | # the subset being filtered for its phase (or filtered out, | |||
|
267 | # depending on publicphase), so add it to the output to be | |||
|
268 | # included (or filtered out). | |||
|
269 | wdirrevs.add(wdirrev) | |||
|
270 | return wdirrevs | |||
|
271 | ||||
|
272 | if not publicphase: | |||
255 | if repo.changelog.filteredrevs: |
|
273 | if repo.changelog.filteredrevs: | |
256 | revs = revs - repo.changelog.filteredrevs |
|
274 | revs = revs - repo.changelog.filteredrevs | |
257 |
|
275 | |||
258 | if subset is None: |
|
276 | if subset is None: | |
259 | return smartset.baseset(revs) |
|
277 | return smartset.baseset(revs) | |
260 | else: |
|
278 | else: | |
261 | if wdirrev in subset and repo[None].phase() in phases: |
|
279 | revs = _addwdir(subset, revs) | |
262 | # The working dir would never be in the cache, but it was |
|
|||
263 | # in the subset being filtered for its phase, so add it to |
|
|||
264 | # the output. |
|
|||
265 | revs.add(wdirrev) |
|
|||
266 |
|
||||
267 | return subset & smartset.baseset(revs) |
|
280 | return subset & smartset.baseset(revs) | |
268 | else: |
|
281 | else: | |
269 | # phases keeps all the *other* phases. |
|
|||
270 | phases = set(allphases).difference(phases) |
|
|||
271 | if not phases: |
|
|||
272 | return smartset.fullreposet(repo) |
|
|||
273 |
|
||||
274 | # revs has the revisions in all *other* phases. |
|
|||
275 | if len(phases) == 1: |
|
|||
276 | [p] = phases |
|
|||
277 | revs = self._phasesets[p] |
|
|||
278 | else: |
|
|||
279 | revs = set.union(*[self._phasesets[p] for p in phases]) |
|
|||
280 |
|
||||
281 | if subset is None: |
|
282 | if subset is None: | |
282 | subset = smartset.fullreposet(repo) |
|
283 | subset = smartset.fullreposet(repo) | |
283 |
|
284 | |||
284 | if wdirrev in subset and repo[None].phase() in phases: |
|
285 | revs = _addwdir(subset, revs) | |
285 | # The working dir is in the subset being filtered, and its |
|
|||
286 | # phase is in the phases *not* being returned, so add it to the |
|
|||
287 | # set of revisions to filter out. |
|
|||
288 | revs.add(wdirrev) |
|
|||
289 |
|
286 | |||
290 | if not revs: |
|
287 | if not revs: | |
291 | return subset |
|
288 | return subset |
General Comments 0
You need to be logged in to leave comments.
Login now