Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/revset.py @ 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 | e150c1d5f262 |
children | 3f9e68864ccc |
comparison
equal
deleted
inserted
replaced
29263:817ee3cfe862 | 29264:22625884b15c |
---|---|
1866 revs.sort(reverse=True) | 1866 revs.sort(reverse=True) |
1867 return revs | 1867 return revs |
1868 # sort() is guaranteed to be stable | 1868 # sort() is guaranteed to be stable |
1869 ctxs = [repo[r] for r in revs] | 1869 ctxs = [repo[r] for r in revs] |
1870 for k in reversed(keys): | 1870 for k in reversed(keys): |
1871 fk = k | |
1872 reverse = (k[0] == '-') | |
1873 if reverse: | |
1874 k = k[1:] | |
1871 if k == 'rev': | 1875 if k == 'rev': |
1872 ctxs.sort(key=lambda c: c.rev()) | 1876 ctxs.sort(key=lambda c: c.rev(), reverse=reverse) |
1873 elif k == '-rev': | |
1874 ctxs.sort(key=lambda c: c.rev(), reverse=True) | |
1875 elif k == 'branch': | 1877 elif k == 'branch': |
1876 ctxs.sort(key=lambda c: c.branch()) | 1878 ctxs.sort(key=lambda c: c.branch(), reverse=reverse) |
1877 elif k == '-branch': | |
1878 ctxs.sort(key=lambda c: c.branch(), reverse=True) | |
1879 elif k == 'desc': | 1879 elif k == 'desc': |
1880 ctxs.sort(key=lambda c: c.description()) | 1880 ctxs.sort(key=lambda c: c.description(), reverse=reverse) |
1881 elif k == '-desc': | |
1882 ctxs.sort(key=lambda c: c.description(), reverse=True) | |
1883 elif k in 'user author': | 1881 elif k in 'user author': |
1884 ctxs.sort(key=lambda c: c.user()) | 1882 ctxs.sort(key=lambda c: c.user(), reverse=reverse) |
1885 elif k in '-user -author': | |
1886 ctxs.sort(key=lambda c: c.user(), reverse=True) | |
1887 elif k == 'date': | 1883 elif k == 'date': |
1888 ctxs.sort(key=lambda c: c.date()[0]) | 1884 ctxs.sort(key=lambda c: c.date()[0], reverse=reverse) |
1889 elif k == '-date': | |
1890 ctxs.sort(key=lambda c: c.date()[0], reverse=True) | |
1891 else: | 1885 else: |
1892 raise error.ParseError(_("unknown sort key %r") % k) | 1886 raise error.ParseError(_("unknown sort key %r") % fk) |
1893 return baseset([c.rev() for c in ctxs]) | 1887 return baseset([c.rev() for c in ctxs]) |
1894 | 1888 |
1895 @predicate('subrepo([pattern])') | 1889 @predicate('subrepo([pattern])') |
1896 def subrepo(repo, subset, x): | 1890 def subrepo(repo, subset, x): |
1897 """Changesets that add, modify or remove the given subrepo. If no subrepo | 1891 """Changesets that add, modify or remove the given subrepo. If no subrepo |