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