diff mercurial/revset.py @ 25307:4d1e56b29a91

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.
author Yuya Nishihara <yuya@tcha.org>
date Sun, 26 Apr 2015 18:27:32 +0900
parents 61b3529e2377
children 036c26b08b71
line wrap: on
line diff
--- 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