comparison mercurial/revset.py @ 22538:a428db9ab61d

revset: use `subset &` in bare `p1()` This takes advantage of the `fullreposet` smartness and yields a nice speedup. revset #0: p1() 0) wall 0.003256 comb 0.010000 user 0.010000 sys 0.000000 (best of 527) 1) wall 0.000066 comb 0.000000 user 0.000000 sys 0.000000 (best of 23224)
author Pierre-Yves David <pierre-yves.david@fb.com>
date Wed, 17 Sep 2014 10:59:52 -0700
parents bbf4f3dfd700
children 6f434ef54222
comparison
equal deleted inserted replaced
22537:bbf4f3dfd700 22538:a428db9ab61d
1196 """``p1([set])`` 1196 """``p1([set])``
1197 First parent of changesets in set, or the working directory. 1197 First parent of changesets in set, or the working directory.
1198 """ 1198 """
1199 if x is None: 1199 if x is None:
1200 p = repo[x].p1().rev() 1200 p = repo[x].p1().rev()
1201 return subset.filter(lambda r: r == p) 1201 if p >= 0:
1202 return subset & baseset([p])
1203 return baseset([])
1202 1204
1203 ps = set() 1205 ps = set()
1204 cl = repo.changelog 1206 cl = repo.changelog
1205 for r in getset(repo, spanset(repo), x): 1207 for r in getset(repo, spanset(repo), x):
1206 ps.add(cl.parentrevs(r)[0]) 1208 ps.add(cl.parentrevs(r)[0])