Mercurial > hg
changeset 29264:22625884b15c
revset: factor out reverse flag of sort() key
Prepares for making a table of sort keys. This assumes 'k' has at least one
character, which should be guaranteed by keys.split().
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 14 May 2016 19:46:18 +0900 |
parents | 817ee3cfe862 |
children | 3f9e68864ccc |
files | mercurial/revset.py tests/test-revset.t |
diffstat | 2 files changed, 16 insertions(+), 16 deletions(-) [+] |
line wrap: on
line diff
--- a/mercurial/revset.py Sat May 28 12:29:59 2016 -0700 +++ b/mercurial/revset.py Sat May 14 19:46:18 2016 +0900 @@ -1868,28 +1868,22 @@ # sort() is guaranteed to be stable ctxs = [repo[r] for r in revs] for k in reversed(keys): + fk = k + reverse = (k[0] == '-') + if reverse: + k = k[1:] if k == 'rev': - ctxs.sort(key=lambda c: c.rev()) - elif k == '-rev': - ctxs.sort(key=lambda c: c.rev(), reverse=True) + ctxs.sort(key=lambda c: c.rev(), reverse=reverse) elif k == 'branch': - ctxs.sort(key=lambda c: c.branch()) - elif k == '-branch': - ctxs.sort(key=lambda c: c.branch(), reverse=True) + ctxs.sort(key=lambda c: c.branch(), reverse=reverse) elif k == 'desc': - ctxs.sort(key=lambda c: c.description()) - elif k == '-desc': - ctxs.sort(key=lambda c: c.description(), reverse=True) + ctxs.sort(key=lambda c: c.description(), reverse=reverse) elif k in 'user author': - ctxs.sort(key=lambda c: c.user()) - elif k in '-user -author': - ctxs.sort(key=lambda c: c.user(), reverse=True) + ctxs.sort(key=lambda c: c.user(), reverse=reverse) elif k == 'date': - ctxs.sort(key=lambda c: c.date()[0]) - elif k == '-date': - ctxs.sort(key=lambda c: c.date()[0], reverse=True) + ctxs.sort(key=lambda c: c.date()[0], reverse=reverse) else: - raise error.ParseError(_("unknown sort key %r") % k) + raise error.ParseError(_("unknown sort key %r") % fk) return baseset([c.rev() for c in ctxs]) @predicate('subrepo([pattern])')
--- a/tests/test-revset.t Sat May 28 12:29:59 2016 -0700 +++ b/tests/test-revset.t Sat May 14 19:46:18 2016 +0900 @@ -962,6 +962,12 @@ 6 2 +test invalid sort keys + + $ log 'sort(all(), -invalid)' + hg: parse error: unknown sort key '-invalid' + [255] + $ cd .. test sorting by multiple keys including variable-length strings