# HG changeset patch # User Yuya Nishihara # Date 1462250172 -32400 # Node ID 285a8c3e53f2183438f0cdbc238e4ab851d0d110 # Parent 89dbae952ec12a12834ef595c90ba18d437a5eb7 revset: make sort() noop depending on ordering requirement (BC) See the previous patch for why. diff -r 89dbae952ec1 -r 285a8c3e53f2 mercurial/revset.py --- a/mercurial/revset.py Tue May 03 13:36:12 2016 +0900 +++ b/mercurial/revset.py Tue May 03 13:36:12 2016 +0900 @@ -1901,8 +1901,8 @@ return args['set'], keyflags, opts -@predicate('sort(set[, [-]key... [, ...]])', safe=True) -def sort(repo, subset, x): +@predicate('sort(set[, [-]key... [, ...]])', safe=True, takeorder=True) +def sort(repo, subset, x, order): """Sort set by keys. The default sort order is ascending, specify a key as ``-key`` to sort in descending order. @@ -1923,7 +1923,7 @@ s, keyflags, opts = _getsortargs(x) revs = getset(repo, subset, s) - if not keyflags: + if not keyflags or order != defineorder: return revs if len(keyflags) == 1 and keyflags[0][0] == "rev": revs.sort(reverse=keyflags[0][1]) diff -r 89dbae952ec1 -r 285a8c3e53f2 tests/test-revset.t --- a/tests/test-revset.t Tue May 03 13:36:12 2016 +0900 +++ b/tests/test-revset.t Tue May 03 13:36:12 2016 +0900 @@ -1633,12 +1633,20 @@ define) * set: , + , > + 0 + 1 2 - 1 - 0 - BROKEN: should be '0 1 2' + + invalid argument passed to noop sort(): + + $ log '0:2 & sort()' + hg: parse error: sort requires one or two arguments + [255] + $ log '0:2 & sort(all(), -invalid)' + hg: parse error: unknown sort key '-invalid' + [255] for 'A & f(B)', 'B' should not be affected by the order of 'A':