11382
|
1 Mercurial supports a functional language for selecting a set of
|
|
2 revisions.
|
|
3
|
|
4 The language supports a number of predicates which are joined by infix
|
|
5 operators. Parenthesis can be used for grouping.
|
|
6
|
|
7 Identifiers such as branch names must be quoted with single or double
|
|
8 quotes if they contain characters outside of ``[a-zA-Z0-9]`` or if
|
|
9 they match one of the predefined predicates. Special characters can be
|
|
10 used in the identifiers by quoting them, e.g., ``\n`` is interpreted
|
|
11 as a newline.
|
|
12
|
|
13 There is a single prefix operator:
|
|
14
|
|
15 ``not x``
|
|
16 Changesets not in x. Short form is ``! x``.
|
|
17
|
|
18 These are the supported infix operators:
|
|
19
|
|
20 ``x::y``
|
|
21 A DAG range, meaning all changesets that are descendants of x and
|
|
22 ancestors of y, including x and y themselves. If the first endpoint
|
|
23 is left out, this is equivalent to ``ancestors(y)``, if the second
|
|
24 is left out it is equivalent to ``descendents(x)``.
|
|
25
|
|
26 An alternative syntax is ``x..y``.
|
|
27
|
|
28 ``x:y``
|
|
29 All changesets with revision numbers between x and y, both
|
|
30 inclusive. Either endpoint can be left out, they default to 0 and
|
|
31 tip.
|
|
32
|
|
33 ``x and y``
|
|
34 The intersection of changesets in x and y. Short form is ``x & y``.
|
|
35
|
|
36 ``x or y``
|
|
37 The union of changesets in x and y. There are two alternative short
|
|
38 forms: ``x | y`` and ``x + y``.
|
|
39
|
|
40 ``x - y``
|
|
41 Changesets in x but not in y.
|
|
42
|
|
43 The following predicates are supported:
|
|
44
|
|
45 ``adds(pattern)``
|
|
46 Changesets that add a file matching pattern.
|
|
47
|
|
48 ``all()``
|
|
49 All changesets, the same as ``0:tip``.
|
|
50
|
|
51 ``ancestor(single, single)``
|
|
52 Greatest common ancestor of the two changesets.
|
|
53
|
|
54 ``ancestors(set)``
|
|
55 Changesets that are ancestors of a changeset in set.
|
|
56
|
|
57 ``author(string)``
|
|
58 Alias for ``user(string)``.
|
|
59
|
|
60 ``branch(set)``
|
|
61 The branch names are found for changesets in set, and the result is
|
|
62 all changesets belonging to one those branches.
|
|
63
|
|
64 ``children(set)``
|
|
65 Child changesets of changesets in set.
|
|
66
|
|
67 ``closed()``
|
|
68 Changeset is closed.
|
|
69
|
|
70 ``contains(pattern)``
|
|
71 Revision contains pattern.
|
|
72
|
|
73 ``date(interval)``
|
|
74 Changesets within the interval, see :hg:`help dates`.
|
|
75
|
|
76 ``descendants(set)``
|
|
77 Changesets which are decendants of changesets in set.
|
|
78
|
|
79 ``file(pattern)``
|
|
80 Changesets which manually affected files matching pattern.
|
|
81
|
|
82 ``follow()``
|
|
83 An alias for ``::.`` (ancestors of the working copy's first parent).
|
|
84
|
|
85 ``grep(regex)``
|
|
86 Like ``keyword(string)`` but accepts a regex.
|
|
87
|
|
88 ``head()``
|
|
89 Changeset is a head.
|
|
90
|
|
91 ``heads(set)``
|
|
92 Members of set with no children in set.
|
|
93
|
|
94 ``keyword(string)``
|
|
95 Search commit message, user name, and names of changed files for
|
|
96 string.
|
|
97
|
|
98 ``limit(set, n)``
|
|
99 First n members of set.
|
|
100
|
|
101 ``max(set)``
|
|
102 Changeset with highest revision number in set.
|
|
103
|
|
104 ``merge()``
|
|
105 Changeset is a merge changeset.
|
|
106
|
|
107 ``modifies(pattern)``
|
|
108 Changesets which modify files matching pattern.
|
|
109
|
|
110 ``outgoing([path])``
|
|
111 Changesets missing in path.
|
|
112
|
|
113 ``p1(set)``
|
|
114 First parent of changesets in set.
|
|
115
|
|
116 ``p2(set)``
|
|
117 Second parent of changesets in set.
|
|
118
|
|
119 ``parents(set)``
|
|
120 The set of all parents for all changesets in set.
|
|
121
|
|
122 ``removes(pattern)``
|
|
123 Changesets which remove files matching pattern.
|
|
124
|
|
125 ``reverse(set)``
|
|
126 Reverse order of set.
|
|
127
|
|
128 ``roots(set)``
|
|
129 Changesets with no parent changeset in set.
|
|
130
|
|
131 ``sort(set[, [-]key...])``
|
|
132 Sort set by keys. The default sort order is ascending, specify a key
|
|
133 as ``-key`` to sort in descending order.
|
|
134
|
|
135 The keys can be:
|
|
136
|
|
137 - ``rev`` for the revision number,
|
|
138 - ``branch`` for the branch name,
|
|
139 - ``desc`` for the commit message (description),
|
|
140 - ``user`` for user name (``author`` can be used as an alias),
|
|
141 - ``date`` for the commit date
|
|
142
|
|
143 ``tagged()``
|
|
144 Changeset is tagged.
|
|
145
|
|
146 ``user(string)``
|
|
147 User name is string.
|
|
148
|
|
149 Command line equivalents for :hg:`log`::
|
|
150
|
|
151 -f -> ::.
|
|
152 -d x -> date(x)
|
|
153 -k x -> keyword(x)
|
|
154 -m -> merge()
|
|
155 -u x -> user(x)
|
|
156 -b x -> branch(x)
|
|
157 -P x -> !::x
|
|
158 -l x -> limit(expr, x)
|
|
159
|
|
160 Some sample queries::
|
|
161
|
|
162 hg log -r 'branch(default)'
|
|
163 hg log -r 'branch(default) and 1.5:: and not merge()'
|
|
164 hg log -r '1.3::1.5 and keyword(bug) and file("hgext/*")'
|
|
165 hg log -r 'sort(date("May 2008"), user)'
|
|
166 hg log -r '(keyword(bug) or keyword(issue)) and not ancestors(tagged())'
|