Mercurial > evolve
comparison hgext/evolve.py @ 1385:c2584407afbf stable
evolve: move 'successors()' to smarted usage
The "new" smarted can be significantly more efficient than the old was. We
convert our revset to take advantage of that.
author | Pierre-Yves David <pierre-yves.david@fb.com> |
---|---|
date | Thu, 18 Jun 2015 16:15:21 -0700 |
parents | 64c8b8c27811 |
children | b5eaec8a53d0 |
comparison
equal
deleted
inserted
replaced
1384:64c8b8c27811 | 1385:c2584407afbf |
---|---|
456 for p in markerbyobj.get(node(r), ()): | 456 for p in markerbyobj.get(node(r), ()): |
457 for sub in p[1]: | 457 for sub in p[1]: |
458 sr = nm.get(sub) | 458 sr = nm.get(sub) |
459 if sr is not None: | 459 if sr is not None: |
460 cs.add(sr) | 460 cs.add(sr) |
461 cs -= repo.changelog.filteredrevs # nodemap has no filtering | |
461 return cs | 462 return cs |
462 | 463 |
463 def _allsuccessors(repo, s, haltonflags=0): # XXX we need a better naming | 464 def _allsuccessors(repo, s, haltonflags=0): # XXX we need a better naming |
464 """transitive successors of a subset | 465 """transitive successors of a subset |
465 | 466 |
537 def revsetsuccessors(repo, subset, x): | 538 def revsetsuccessors(repo, subset, x): |
538 """``successors(set)`` | 539 """``successors(set)`` |
539 Immediate successors of changesets in set. | 540 Immediate successors of changesets in set. |
540 """ | 541 """ |
541 s = revset.getset(repo, revset.fullreposet(repo), x) | 542 s = revset.getset(repo, revset.fullreposet(repo), x) |
542 cs = _successors(repo, s) | 543 s = revset.baseset(_successors(repo, s)) |
543 return [r for r in subset if r in cs] | 544 s.sort() |
545 return subset & s | |
544 | 546 |
545 @eh.revset('allsuccessors') | 547 @eh.revset('allsuccessors') |
546 def revsetallsuccessors(repo, subset, x): | 548 def revsetallsuccessors(repo, subset, x): |
547 """``allsuccessors(set)`` | 549 """``allsuccessors(set)`` |
548 Transitive successors of changesets in set. | 550 Transitive successors of changesets in set. |