comparison mercurial/revset.py @ 15903:0329d3b12d8e

revset: roots needs to be computed on full set
author Matt Mackall <mpm@selenic.com>
date Tue, 17 Jan 2012 17:48:59 -0600
parents 476a981fdf34
children 878bc4a62a73
comparison
equal deleted inserted replaced
15902:4252d9f08d7e 15903:0329d3b12d8e
323 323
324 def _children(repo, narrow, s): 324 def _children(repo, narrow, s):
325 cs = set() 325 cs = set()
326 pr = repo.changelog.parentrevs 326 pr = repo.changelog.parentrevs
327 s = set(s) 327 s = set(s)
328 for r in narrow: 328 for r in xrange(len(repo)):
329 for p in pr(r): 329 for p in pr(r):
330 if p in s: 330 if p in s:
331 cs.add(r) 331 cs.add(r)
332 return cs 332 return cs
333 333
774 774
775 def roots(repo, subset, x): 775 def roots(repo, subset, x):
776 """``roots(set)`` 776 """``roots(set)``
777 Changesets with no parent changeset in set. 777 Changesets with no parent changeset in set.
778 """ 778 """
779 s = getset(repo, subset, x) 779 s = getset(repo, xrange(len(repo)), x)
780 cs = _children(repo, s, s) 780 cs = _children(repo, s, s)
781 return [r for r in s if r not in cs] 781 return [r for r in s if r not in cs]
782 782
783 def secret(repo, subset, x): 783 def secret(repo, subset, x):
784 """``secret()`` 784 """``secret()``