Mercurial > hg
comparison mercurial/revset.py @ 15899:476a981fdf34
revset: optimize roots and children
author | Matt Mackall <mpm@selenic.com> |
---|---|
date | Mon, 16 Jan 2012 01:21:30 -0600 |
parents | 6902e13ddd03 |
children | 0329d3b12d8e |
comparison
equal
deleted
inserted
replaced
15898:6902e13ddd03 | 15899:476a981fdf34 |
---|---|
319 if m(f): | 319 if m(f): |
320 s.append(r) | 320 s.append(r) |
321 break | 321 break |
322 return s | 322 return s |
323 | 323 |
324 def _children(repo, narrow, s): | |
325 cs = set() | |
326 pr = repo.changelog.parentrevs | |
327 s = set(s) | |
328 for r in narrow: | |
329 for p in pr(r): | |
330 if p in s: | |
331 cs.add(r) | |
332 return cs | |
333 | |
324 def children(repo, subset, x): | 334 def children(repo, subset, x): |
325 """``children(set)`` | 335 """``children(set)`` |
326 Child changesets of changesets in set. | 336 Child changesets of changesets in set. |
327 """ | 337 """ |
328 cs = set() | 338 s = getset(repo, range(len(repo)), x) |
329 cl = repo.changelog | 339 cs = _children(repo, subset, s) |
330 s = set(getset(repo, range(len(repo)), x)) | |
331 for r in xrange(0, len(repo)): | |
332 for p in cl.parentrevs(r): | |
333 if p in s: | |
334 cs.add(r) | |
335 return [r for r in subset if r in cs] | 340 return [r for r in subset if r in cs] |
336 | 341 |
337 def closed(repo, subset, x): | 342 def closed(repo, subset, x): |
338 """``closed()`` | 343 """``closed()`` |
339 Changeset is closed. | 344 Changeset is closed. |
770 def roots(repo, subset, x): | 775 def roots(repo, subset, x): |
771 """``roots(set)`` | 776 """``roots(set)`` |
772 Changesets with no parent changeset in set. | 777 Changesets with no parent changeset in set. |
773 """ | 778 """ |
774 s = getset(repo, subset, x) | 779 s = getset(repo, subset, x) |
775 cs = set(children(repo, subset, x)) | 780 cs = _children(repo, s, s) |
776 return [r for r in s if r not in cs] | 781 return [r for r in s if r not in cs] |
777 | 782 |
778 def secret(repo, subset, x): | 783 def secret(repo, subset, x): |
779 """``secret()`` | 784 """``secret()`` |
780 Changeset in secret phase.""" | 785 Changeset in secret phase.""" |