revset: comment that we can't swap 'or' operands by weight
authorYuya Nishihara <yuya@tcha.org>
Sun, 26 Apr 2015 18:27:32 +0900
changeset 25307 4d1e56b29a91
parent 25306 c87b05925054
child 25308 036c26b08b71
revset: comment that we can't swap 'or' operands by weight Though the original code did nothing, it tried to optimize the calculation order by weight. But we can't simply swap 'ta' and 'tb' because it would change the order of revisions. For future reference, this patch keeps the modified version of the original code as comment.
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