##// END OF EJS Templates
help: avoid using "$n" parameter in revsetalias example...
Yuya Nishihara -
r28986:97811ff7 stable
parent child Browse files
Show More
@@ -1,134 +1,134 b''
1 Mercurial supports a functional language for selecting a set of
1 Mercurial supports a functional language for selecting a set of
2 revisions.
2 revisions.
3
3
4 The language supports a number of predicates which are joined by infix
4 The language supports a number of predicates which are joined by infix
5 operators. Parenthesis can be used for grouping.
5 operators. Parenthesis can be used for grouping.
6
6
7 Identifiers such as branch names may need quoting with single or
7 Identifiers such as branch names may need quoting with single or
8 double quotes if they contain characters like ``-`` or if they match
8 double quotes if they contain characters like ``-`` or if they match
9 one of the predefined predicates.
9 one of the predefined predicates.
10
10
11 Special characters can be used in quoted identifiers by escaping them,
11 Special characters can be used in quoted identifiers by escaping them,
12 e.g., ``\n`` is interpreted as a newline. To prevent them from being
12 e.g., ``\n`` is interpreted as a newline. To prevent them from being
13 interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``.
13 interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``.
14
14
15 There is a single prefix operator:
15 There is a single prefix operator:
16
16
17 ``not x``
17 ``not x``
18 Changesets not in x. Short form is ``! x``.
18 Changesets not in x. Short form is ``! x``.
19
19
20 These are the supported infix operators:
20 These are the supported infix operators:
21
21
22 ``x::y``
22 ``x::y``
23 A DAG range, meaning all changesets that are descendants of x and
23 A DAG range, meaning all changesets that are descendants of x and
24 ancestors of y, including x and y themselves. If the first endpoint
24 ancestors of y, including x and y themselves. If the first endpoint
25 is left out, this is equivalent to ``ancestors(y)``, if the second
25 is left out, this is equivalent to ``ancestors(y)``, if the second
26 is left out it is equivalent to ``descendants(x)``.
26 is left out it is equivalent to ``descendants(x)``.
27
27
28 An alternative syntax is ``x..y``.
28 An alternative syntax is ``x..y``.
29
29
30 ``x:y``
30 ``x:y``
31 All changesets with revision numbers between x and y, both
31 All changesets with revision numbers between x and y, both
32 inclusive. Either endpoint can be left out, they default to 0 and
32 inclusive. Either endpoint can be left out, they default to 0 and
33 tip.
33 tip.
34
34
35 ``x and y``
35 ``x and y``
36 The intersection of changesets in x and y. Short form is ``x & y``.
36 The intersection of changesets in x and y. Short form is ``x & y``.
37
37
38 ``x or y``
38 ``x or y``
39 The union of changesets in x and y. There are two alternative short
39 The union of changesets in x and y. There are two alternative short
40 forms: ``x | y`` and ``x + y``.
40 forms: ``x | y`` and ``x + y``.
41
41
42 ``x - y``
42 ``x - y``
43 Changesets in x but not in y.
43 Changesets in x but not in y.
44
44
45 ``x^n``
45 ``x^n``
46 The nth parent of x, n == 0, 1, or 2.
46 The nth parent of x, n == 0, 1, or 2.
47 For n == 0, x; for n == 1, the first parent of each changeset in x;
47 For n == 0, x; for n == 1, the first parent of each changeset in x;
48 for n == 2, the second parent of changeset in x.
48 for n == 2, the second parent of changeset in x.
49
49
50 ``x~n``
50 ``x~n``
51 The nth first ancestor of x; ``x~0`` is x; ``x~3`` is ``x^^^``.
51 The nth first ancestor of x; ``x~0`` is x; ``x~3`` is ``x^^^``.
52
52
53 There is a single postfix operator:
53 There is a single postfix operator:
54
54
55 ``x^``
55 ``x^``
56 Equivalent to ``x^1``, the first parent of each changeset in x.
56 Equivalent to ``x^1``, the first parent of each changeset in x.
57
57
58
58
59 The following predicates are supported:
59 The following predicates are supported:
60
60
61 .. predicatesmarker
61 .. predicatesmarker
62
62
63 New predicates (known as "aliases") can be defined, using any combination of
63 New predicates (known as "aliases") can be defined, using any combination of
64 existing predicates or other aliases. An alias definition looks like::
64 existing predicates or other aliases. An alias definition looks like::
65
65
66 <alias> = <definition>
66 <alias> = <definition>
67
67
68 in the ``revsetalias`` section of a Mercurial configuration file. Arguments
68 in the ``revsetalias`` section of a Mercurial configuration file. Arguments
69 of the form `$1`, `$2`, etc. are substituted from the alias into the
69 of the form `a1`, `a2`, etc. are substituted from the alias into the
70 definition.
70 definition.
71
71
72 For example,
72 For example,
73
73
74 ::
74 ::
75
75
76 [revsetalias]
76 [revsetalias]
77 h = heads()
77 h = heads()
78 d($1) = sort($1, date)
78 d(s) = sort(s, date)
79 rs($1, $2) = reverse(sort($1, $2))
79 rs(s, k) = reverse(sort(s, k))
80
80
81 defines three aliases, ``h``, ``d``, and ``rs``. ``rs(0:tip, author)`` is
81 defines three aliases, ``h``, ``d``, and ``rs``. ``rs(0:tip, author)`` is
82 exactly equivalent to ``reverse(sort(0:tip, author))``.
82 exactly equivalent to ``reverse(sort(0:tip, author))``.
83
83
84 An infix operator ``##`` can concatenate strings and identifiers into
84 An infix operator ``##`` can concatenate strings and identifiers into
85 one string. For example::
85 one string. For example::
86
86
87 [revsetalias]
87 [revsetalias]
88 issue($1) = grep(r'\bissue[ :]?' ## $1 ## r'\b|\bbug\(' ## $1 ## r'\)')
88 issue(a1) = grep(r'\bissue[ :]?' ## a1 ## r'\b|\bbug\(' ## a1 ## r'\)')
89
89
90 ``issue(1234)`` is equivalent to ``grep(r'\bissue[ :]?1234\b|\bbug\(1234\)')``
90 ``issue(1234)`` is equivalent to ``grep(r'\bissue[ :]?1234\b|\bbug\(1234\)')``
91 in this case. This matches against all of "issue 1234", "issue:1234",
91 in this case. This matches against all of "issue 1234", "issue:1234",
92 "issue1234" and "bug(1234)".
92 "issue1234" and "bug(1234)".
93
93
94 All other prefix, infix and postfix operators have lower priority than
94 All other prefix, infix and postfix operators have lower priority than
95 ``##``. For example, ``$1 ## $2~2`` is equivalent to ``($1 ## $2)~2``.
95 ``##``. For example, ``a1 ## a2~2`` is equivalent to ``(a1 ## a2)~2``.
96
96
97 Command line equivalents for :hg:`log`::
97 Command line equivalents for :hg:`log`::
98
98
99 -f -> ::.
99 -f -> ::.
100 -d x -> date(x)
100 -d x -> date(x)
101 -k x -> keyword(x)
101 -k x -> keyword(x)
102 -m -> merge()
102 -m -> merge()
103 -u x -> user(x)
103 -u x -> user(x)
104 -b x -> branch(x)
104 -b x -> branch(x)
105 -P x -> !::x
105 -P x -> !::x
106 -l x -> limit(expr, x)
106 -l x -> limit(expr, x)
107
107
108 Some sample queries:
108 Some sample queries:
109
109
110 - Changesets on the default branch::
110 - Changesets on the default branch::
111
111
112 hg log -r "branch(default)"
112 hg log -r "branch(default)"
113
113
114 - Changesets on the default branch since tag 1.5 (excluding merges)::
114 - Changesets on the default branch since tag 1.5 (excluding merges)::
115
115
116 hg log -r "branch(default) and 1.5:: and not merge()"
116 hg log -r "branch(default) and 1.5:: and not merge()"
117
117
118 - Open branch heads::
118 - Open branch heads::
119
119
120 hg log -r "head() and not closed()"
120 hg log -r "head() and not closed()"
121
121
122 - Changesets between tags 1.3 and 1.5 mentioning "bug" that affect
122 - Changesets between tags 1.3 and 1.5 mentioning "bug" that affect
123 ``hgext/*``::
123 ``hgext/*``::
124
124
125 hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"
125 hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')"
126
126
127 - Changesets committed in May 2008, sorted by user::
127 - Changesets committed in May 2008, sorted by user::
128
128
129 hg log -r "sort(date('May 2008'), user)"
129 hg log -r "sort(date('May 2008'), user)"
130
130
131 - Changesets mentioning "bug" or "issue" that are not in a tagged
131 - Changesets mentioning "bug" or "issue" that are not in a tagged
132 release::
132 release::
133
133
134 hg log -r "(keyword(bug) or keyword(issue)) and not ancestors(tag())"
134 hg log -r "(keyword(bug) or keyword(issue)) and not ancestors(tag())"
General Comments 0
You need to be logged in to leave comments. Login now