##// END OF EJS Templates
revset: optimize not public revset...
Laurent Charignon -
r25191:08d1ef09 default
parent child Browse files
Show More
@@ -1478,6 +1478,22 b' def present(repo, subset, x):'
1478 except error.RepoLookupError:
1478 except error.RepoLookupError:
1479 return baseset()
1479 return baseset()
1480
1480
1481 def _notpublic(repo, subset, x):
1482 """``_notpublic()``
1483 Changeset not in public phase."""
1484 # i18n: "public" is a keyword
1485 getargs(x, 0, 0, _("_notpublic takes no arguments"))
1486 if repo._phasecache._phasesets:
1487 s = set()
1488 for u in repo._phasecache._phasesets[1:]:
1489 s.update(u)
1490 return subset & s
1491 else:
1492 phase = repo._phasecache.phase
1493 target = phases.public
1494 condition = lambda r: phase(repo, r) != target
1495 return subset.filter(condition, cache=False)
1496
1481 def public(repo, subset, x):
1497 def public(repo, subset, x):
1482 """``public()``
1498 """``public()``
1483 Changeset in public phase."""
1499 Changeset in public phase."""
@@ -1984,6 +2000,7 b' symbols = {'
1984 "parents": parents,
2000 "parents": parents,
1985 "present": present,
2001 "present": present,
1986 "public": public,
2002 "public": public,
2003 "_notpublic": _notpublic,
1987 "remote": remote,
2004 "remote": remote,
1988 "removes": removes,
2005 "removes": removes,
1989 "rev": rev,
2006 "rev": rev,
@@ -2058,6 +2075,7 b' safesymbols = set(['
2058 "parents",
2075 "parents",
2059 "present",
2076 "present",
2060 "public",
2077 "public",
2078 "_notpublic",
2061 "remote",
2079 "remote",
2062 "removes",
2080 "removes",
2063 "rev",
2081 "rev",
@@ -2149,8 +2167,14 b' def optimize(x, small):'
2149 wb, wa = wa, wb
2167 wb, wa = wa, wb
2150 return max(wa, wb), (op, ta, tb)
2168 return max(wa, wb), (op, ta, tb)
2151 elif op == 'not':
2169 elif op == 'not':
2152 o = optimize(x[1], not small)
2170 # Optimize not public() to _notpublic() because we have a fast version
2153 return o[0], (op, o[1])
2171 if x[1] == ('func', ('symbol', 'public'), None):
2172 newsym = ('func', ('symbol', '_notpublic'), None)
2173 o = optimize(newsym, not small)
2174 return o[0], o[1]
2175 else:
2176 o = optimize(x[1], not small)
2177 return o[0], (op, o[1])
2154 elif op == 'parentpost':
2178 elif op == 'parentpost':
2155 o = optimize(x[1], small)
2179 o = optimize(x[1], small)
2156 return o[0], (op, o[1])
2180 return o[0], (op, o[1])
General Comments 0
You need to be logged in to leave comments. Login now