Mercurial > public > mercurial-scm > hg
comparison mercurial/revset.py @ 29365:f652e84f23f2
revset: extract function that validates sort() arguments
This function will be used in _optimize() to get rid of noop sort() call while
validating its arguments.
author | Yuya Nishihara <yuya@tcha.org> |
---|---|
date | Sat, 11 Jun 2016 10:17:49 +0900 |
parents | 76a1a703e23d |
children | 98e8313dcd9e |
comparison
equal
deleted
inserted
replaced
29364:76a1a703e23d | 29365:f652e84f23f2 |
---|---|
1841 'user': lambda c: c.user(), | 1841 'user': lambda c: c.user(), |
1842 'author': lambda c: c.user(), | 1842 'author': lambda c: c.user(), |
1843 'date': lambda c: c.date()[0], | 1843 'date': lambda c: c.date()[0], |
1844 } | 1844 } |
1845 | 1845 |
1846 @predicate('sort(set[, [-]key... [, ...]])', safe=True) | 1846 def _getsortargs(x): |
1847 def sort(repo, subset, x): | 1847 """Parse sort options into (set, [(key, reverse)], opts)""" |
1848 """Sort set by keys. The default sort order is ascending, specify a key | |
1849 as ``-key`` to sort in descending order. | |
1850 | |
1851 The keys can be: | |
1852 | |
1853 - ``rev`` for the revision number, | |
1854 - ``branch`` for the branch name, | |
1855 - ``desc`` for the commit message (description), | |
1856 - ``user`` for user name (``author`` can be used as an alias), | |
1857 - ``date`` for the commit date | |
1858 - ``topo`` for a reverse topographical sort | |
1859 | |
1860 The ``topo`` sort order cannot be combined with other sort keys. This sort | |
1861 takes one optional argument, ``topo.firstbranch``, which takes a revset that | |
1862 specifies what topographical branches to prioritize in the sort. | |
1863 | |
1864 """ | |
1865 args = getargsdict(x, 'sort', 'set keys topo.firstbranch') | 1848 args = getargsdict(x, 'sort', 'set keys topo.firstbranch') |
1866 if 'set' not in args: | 1849 if 'set' not in args: |
1867 # i18n: "sort" is a keyword | 1850 # i18n: "sort" is a keyword |
1868 raise error.ParseError(_('sort requires one or two arguments')) | 1851 raise error.ParseError(_('sort requires one or two arguments')) |
1869 keys = "rev" | 1852 keys = "rev" |
1894 # i18n: "topo" and "topo.firstbranch" are keywords | 1877 # i18n: "topo" and "topo.firstbranch" are keywords |
1895 raise error.ParseError(_( | 1878 raise error.ParseError(_( |
1896 'topo.firstbranch can only be used when using the topo sort ' | 1879 'topo.firstbranch can only be used when using the topo sort ' |
1897 'key')) | 1880 'key')) |
1898 | 1881 |
1899 s = args['set'] | 1882 return args['set'], keyflags, opts |
1883 | |
1884 @predicate('sort(set[, [-]key... [, ...]])', safe=True) | |
1885 def sort(repo, subset, x): | |
1886 """Sort set by keys. The default sort order is ascending, specify a key | |
1887 as ``-key`` to sort in descending order. | |
1888 | |
1889 The keys can be: | |
1890 | |
1891 - ``rev`` for the revision number, | |
1892 - ``branch`` for the branch name, | |
1893 - ``desc`` for the commit message (description), | |
1894 - ``user`` for user name (``author`` can be used as an alias), | |
1895 - ``date`` for the commit date | |
1896 - ``topo`` for a reverse topographical sort | |
1897 | |
1898 The ``topo`` sort order cannot be combined with other sort keys. This sort | |
1899 takes one optional argument, ``topo.firstbranch``, which takes a revset that | |
1900 specifies what topographical branches to prioritize in the sort. | |
1901 | |
1902 """ | |
1903 s, keyflags, opts = _getsortargs(x) | |
1900 revs = getset(repo, subset, s) | 1904 revs = getset(repo, subset, s) |
1901 | 1905 |
1902 if not keyflags: | 1906 if not keyflags: |
1903 return revs | 1907 return revs |
1904 if len(keyflags) == 1 and keyflags[0][0] == "rev": | 1908 if len(keyflags) == 1 and keyflags[0][0] == "rev": |