diff -r c87b05925054 -r 4d1e56b29a91 mercurial/revset.py --- a/mercurial/revset.py Sun Apr 26 18:05:23 2015 +0900 +++ b/mercurial/revset.py Sun Apr 26 18:27:32 2015 +0900 @@ -2162,8 +2162,10 @@ elif op == 'or': wa, ta = optimize(x[1], False) wb, tb = optimize(x[2], False) - if wb < wa: - wb, wa = wa, wb + # we can't reorder trees by weight because it would change the order. + # ("sort(a + b)" == "sort(b + a)", but "a + b" != "b + a") + # if wb < wa: + # tb, ta = ta, tb return max(wa, wb), (op, ta, tb) elif op == 'not': # Optimize not public() to _notpublic() because we have a fast version