Mercurial > evolve
comparison hgext3rd/topic/stack.py @ 4477:faf99d48eda9
stack: fix phasecache._phasesets check logic
When _phasesets is not None, it's a list, and it contains set()s of revisions
in a specific phase, starting from public, draft, secret and so on. But since
repos are supposed to have the majority of revisions in public phase, the first
element of this list is not a (potentially huge) set, but None.
Previously this code tried to check if there's any element that is None, and
was always finding None at index 0, so the short path was executed every time
and the rest of the function was never used.
author | Anton Shestakov <av6@dwimlabs.net> |
---|---|
date | Sat, 06 Apr 2019 15:49:22 +0200 |
parents | 931c8f6f4b1b |
children | 94743877e50b |
comparison
equal
deleted
inserted
replaced
4476:f0bda6a6d93b | 4477:faf99d48eda9 |
---|---|
40 """build the smaller set of revs that might be part of a stack. | 40 """build the smaller set of revs that might be part of a stack. |
41 | 41 |
42 The intend is to build something more efficient than what revsets do in | 42 The intend is to build something more efficient than what revsets do in |
43 this area. | 43 this area. |
44 """ | 44 """ |
45 phasecache = repo._phasecache | 45 phasesets = repo._phasecache._phasesets |
46 if not phasecache._phasesets or None in phasecache._phasesets: | 46 if not phasesets or None in phasesets[phases.draft:]: |
47 return repo.revs('(not public()) - obsolete()') | 47 return repo.revs('(not public()) - obsolete()') |
48 | 48 |
49 result = set() | 49 result = set() |
50 for s in phasecache._phasesets[phases.draft:]: | 50 for s in phasecache._phasesets[phases.draft:]: |
51 result |= s | 51 result |= s |