62 # will be evaluated as 'or(y(x()), z(x()))', where 'x()' can change the order |
62 # will be evaluated as 'or(y(x()), z(x()))', where 'x()' can change the order |
63 # of the entries in the set, but 'y()', 'z()' and 'or()' shouldn't. |
63 # of the entries in the set, but 'y()', 'z()' and 'or()' shouldn't. |
64 # |
64 # |
65 # 'any' means the order doesn't matter. For instance, |
65 # 'any' means the order doesn't matter. For instance, |
66 # |
66 # |
67 # (X & Y) | ancestors(Z) |
67 # (X & !Y) | ancestors(Z) |
68 # ^ ^ |
68 # ^ ^ |
69 # any any |
69 # any any |
70 # |
70 # |
71 # For 'X & Y', 'X' decides order so the order of 'Y' does not matter. For |
71 # For 'X & !Y', 'X' decides the order and 'Y' is subtracted from 'X', so the |
72 # 'ancestors(Z)', Z's order does not matter since 'ancestors' does not care |
72 # order of 'Y' does not matter. For 'ancestors(Z)', Z's order does not matter |
73 # about the order of its argument. |
73 # since 'ancestors' does not care about the order of its argument. |
74 # |
74 # |
75 # Currently, most revsets do not care about the order, so 'define' is |
75 # Currently, most revsets do not care about the order, so 'define' is |
76 # equivalent to 'follow' for them, and the resulting order is based on the |
76 # equivalent to 'follow' for them, and the resulting order is based on the |
77 # 'subset' parameter passed down to them: |
77 # 'subset' parameter passed down to them: |
78 # |
78 # |