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.