Mercurial > public > mercurial-scm > hg-stable
diff mercurial/revset.py @ 33087:d83b189aef83
dagop: change revdescendants() to include all root revisions
Prepares for adding depth support. I want to process depth=0 in
revdescendants() to make things simpler.
only() also calls dagop.revdescendants(), but it filters out root revisions
explicitly. So this should cause no problem.
# descendants(0) using hg repo
0) 0.052380
1) 0.051226
# only(tip) using hg repo
0) 0.001433
1) 0.001425
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Tue, 20 Jun 2017 22:26:52 +0900 |
parents | f63d111258da |
children | a53bfc2845f2 |
line wrap: on
line diff
--- a/mercurial/revset.py Tue Jun 20 22:11:23 2017 +0900 +++ b/mercurial/revset.py Tue Jun 20 22:26:52 2017 +0900 @@ -600,19 +600,7 @@ if not roots: return baseset() s = dagop.revdescendants(repo, roots, followfirst) - - # Both sets need to be ascending in order to lazily return the union - # in the correct order. - base = subset & roots - desc = subset & s - result = base + desc - if subset.isascending(): - result.sort() - elif subset.isdescending(): - result.sort(reverse=True) - else: - result = subset & result - return result + return subset & s @predicate('descendants(set)', safe=True) def descendants(repo, subset, x):