[PATCH 4 of 4] revset: extract function that validates sort() arguments

Yuya Nishihara yuya at tcha.org
Wed Jun 15 09:42:55 EDT 2016


# HG changeset patch
# User Yuya Nishihara <yuya at tcha.org>
# Date 1465607869 -32400
#      Sat Jun 11 10:17:49 2016 +0900
# Node ID 3c4f66dd14659be71eb26ce77da991cb2a1babe8
# Parent  daaf43a9a70c5b62652b864b6c2f440ac58a2215
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.

diff --git a/mercurial/revset.py b/mercurial/revset.py
--- a/mercurial/revset.py
+++ b/mercurial/revset.py
@@ -1843,25 +1843,8 @@ def roots(repo, subset, x):
     'date': lambda c: c.date()[0],
 }
 
- at predicate('sort(set[, [-]key... [, ...]])', safe=True)
-def sort(repo, subset, x):
-    """Sort set by keys. The default sort order is ascending, specify a key
-    as ``-key`` to sort in descending order.
-
-    The keys can be:
-
-    - ``rev`` for the revision number,
-    - ``branch`` for the branch name,
-    - ``desc`` for the commit message (description),
-    - ``user`` for user name (``author`` can be used as an alias),
-    - ``date`` for the commit date
-    - ``topo`` for a reverse topographical sort
-
-    The ``topo`` sort order cannot be combined with other sort keys. This sort
-    takes one optional argument, ``topo.firstbranch``, which takes a revset that
-    specifies what topographical branches to prioritize in the sort.
-
-    """
+def _getsortargs(x):
+    """Parse sort options into (set, [(key, reverse)], opts)"""
     args = getargsdict(x, 'sort', 'set keys topo.firstbranch')
     if 'set' not in args:
         # i18n: "sort" is a keyword
@@ -1896,7 +1879,28 @@ def sort(repo, subset, x):
                 'topo.firstbranch can only be used when using the topo sort '
                 'key'))
 
-    s = args['set']
+    return args['set'], keyflags, opts
+
+ at predicate('sort(set[, [-]key... [, ...]])', safe=True)
+def sort(repo, subset, x):
+    """Sort set by keys. The default sort order is ascending, specify a key
+    as ``-key`` to sort in descending order.
+
+    The keys can be:
+
+    - ``rev`` for the revision number,
+    - ``branch`` for the branch name,
+    - ``desc`` for the commit message (description),
+    - ``user`` for user name (``author`` can be used as an alias),
+    - ``date`` for the commit date
+    - ``topo`` for a reverse topographical sort
+
+    The ``topo`` sort order cannot be combined with other sort keys. This sort
+    takes one optional argument, ``topo.firstbranch``, which takes a revset that
+    specifies what topographical branches to prioritize in the sort.
+
+    """
+    s, keyflags, opts = _getsortargs(x)
     revs = getset(repo, subset, s)
 
     if not keyflags:


More information about the Mercurial-devel mailing list