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