Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 38479:72621094505f
revset: fix heads() order to always follow the input set (BC)
An argument expression should never affect the order of the result set.
That's the rule of the revset predicates.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Wed, 27 Jun 2018 23:39:41 +0900 |
parents | f1d55ae2c5c8 |
children | b23ef2f06d98 |
comparison
equal
deleted
inserted
replaced
38478:b2d5ad03f31a | 38479:72621094505f |
---|---|
1127 cl = repo.changelog | 1127 cl = repo.changelog |
1128 for ls in repo.branchmap().itervalues(): | 1128 for ls in repo.branchmap().itervalues(): |
1129 hs.update(cl.rev(h) for h in ls) | 1129 hs.update(cl.rev(h) for h in ls) |
1130 return subset & baseset(hs) | 1130 return subset & baseset(hs) |
1131 | 1131 |
1132 @predicate('heads(set)', safe=True) | 1132 @predicate('heads(set)', safe=True, takeorder=True) |
1133 def heads(repo, subset, x): | 1133 def heads(repo, subset, x, order): |
1134 """Members of set with no children in set. | 1134 """Members of set with no children in set. |
1135 """ | 1135 """ |
1136 s = getset(repo, subset, x) | 1136 # argument set should never define order |
1137 if order == defineorder: | |
1138 order = followorder | |
1139 s = getset(repo, subset, x, order=order) | |
1137 ps = parents(repo, subset, x) | 1140 ps = parents(repo, subset, x) |
1138 return s - ps | 1141 return s - ps |
1139 | 1142 |
1140 @predicate('hidden()', safe=True) | 1143 @predicate('hidden()', safe=True) |
1141 def hidden(repo, subset, x): | 1144 def hidden(repo, subset, x): |