##// END OF EJS Templates
revsets: add a sample query to the help for getting active branches
Brodie Rao -
r12660:6ed5ae62 default
parent child Browse files
Show More
@@ -1,193 +1,197 b''
1 1 Mercurial supports a functional language for selecting a set of
2 2 revisions.
3 3
4 4 The language supports a number of predicates which are joined by infix
5 5 operators. Parenthesis can be used for grouping.
6 6
7 7 Identifiers such as branch names must be quoted with single or double
8 8 quotes if they contain characters outside of
9 9 ``[._a-zA-Z0-9\x80-\xff]`` or if they match one of the predefined
10 10 predicates.
11 11
12 12 Special characters can be used in quoted identifiers by escaping them,
13 13 e.g., ``\n`` is interpreted as a newline. To prevent them from being
14 14 interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``.
15 15
16 16 There is a single prefix operator:
17 17
18 18 ``not x``
19 19 Changesets not in x. Short form is ``! x``.
20 20
21 21 These are the supported infix operators:
22 22
23 23 ``x::y``
24 24 A DAG range, meaning all changesets that are descendants of x and
25 25 ancestors of y, including x and y themselves. If the first endpoint
26 26 is left out, this is equivalent to ``ancestors(y)``, if the second
27 27 is left out it is equivalent to ``descendants(x)``.
28 28
29 29 An alternative syntax is ``x..y``.
30 30
31 31 ``x:y``
32 32 All changesets with revision numbers between x and y, both
33 33 inclusive. Either endpoint can be left out, they default to 0 and
34 34 tip.
35 35
36 36 ``x and y``
37 37 The intersection of changesets in x and y. Short form is ``x & y``.
38 38
39 39 ``x or y``
40 40 The union of changesets in x and y. There are two alternative short
41 41 forms: ``x | y`` and ``x + y``.
42 42
43 43 ``x - y``
44 44 Changesets in x but not in y.
45 45
46 46 The following predicates are supported:
47 47
48 48 ``adds(pattern)``
49 49 Changesets that add a file matching pattern.
50 50
51 51 ``all()``
52 52 All changesets, the same as ``0:tip``.
53 53
54 54 ``ancestor(single, single)``
55 55 Greatest common ancestor of the two changesets.
56 56
57 57 ``ancestors(set)``
58 58 Changesets that are ancestors of a changeset in set.
59 59
60 60 ``author(string)``
61 61 Alias for ``user(string)``.
62 62
63 63 ``branch(set)``
64 64 All changesets belonging to the branches of changesets in set.
65 65
66 66 ``children(set)``
67 67 Child changesets of changesets in set.
68 68
69 69 ``closed()``
70 70 Changeset is closed.
71 71
72 72 ``contains(pattern)``
73 73 Revision contains pattern.
74 74
75 75 ``date(interval)``
76 76 Changesets within the interval, see :hg:`help dates`.
77 77
78 78 ``descendants(set)``
79 79 Changesets which are descendants of changesets in set.
80 80
81 81 ``file(pattern)``
82 82 Changesets affecting files matched by pattern.
83 83
84 84 ``follow()``
85 85 An alias for ``::.`` (ancestors of the working copy's first parent).
86 86
87 87 ``grep(regex)``
88 88 Like ``keyword(string)`` but accepts a regex. Use ``grep(r'...')``
89 89 to ensure special escape characters are handled correctly.
90 90
91 91 ``head()``
92 92 Changeset is a named branch head.
93 93
94 94 ``heads(set)``
95 95 Members of set with no children in set.
96 96
97 97 ``keyword(string)``
98 98 Search commit message, user name, and names of changed files for
99 99 string.
100 100
101 101 ``limit(set, n)``
102 102 First n members of set.
103 103
104 104 ``max(set)``
105 105 Changeset with highest revision number in set.
106 106
107 107 ``min(set)``
108 108 Changeset with lowest revision number in set.
109 109
110 110 ``merge()``
111 111 Changeset is a merge changeset.
112 112
113 113 ``modifies(pattern)``
114 114 Changesets modifying files matched by pattern.
115 115
116 116 ``outgoing([path])``
117 117 Changesets not found in the specified destination repository, or the
118 118 default push location.
119 119
120 120 ``p1(set)``
121 121 First parent of changesets in set.
122 122
123 123 ``p2(set)``
124 124 Second parent of changesets in set.
125 125
126 126 ``parents(set)``
127 127 The set of all parents for all changesets in set.
128 128
129 129 ``present(set)``
130 130 An empty set, if any revision in set isn't found; otherwise,
131 131 all revisions in set.
132 132
133 133 ``removes(pattern)``
134 134 Changesets which remove files matching pattern.
135 135
136 136 ``reverse(set)``
137 137 Reverse order of set.
138 138
139 139 ``roots(set)``
140 140 Changesets with no parent changeset in set.
141 141
142 142 ``sort(set[, [-]key...])``
143 143 Sort set by keys. The default sort order is ascending, specify a key
144 144 as ``-key`` to sort in descending order.
145 145
146 146 The keys can be:
147 147
148 148 - ``rev`` for the revision number,
149 149 - ``branch`` for the branch name,
150 150 - ``desc`` for the commit message (description),
151 151 - ``user`` for user name (``author`` can be used as an alias),
152 152 - ``date`` for the commit date
153 153
154 154 ``tagged()``
155 155 Changeset is tagged.
156 156
157 157 ``user(string)``
158 158 User name is string.
159 159
160 160 Command line equivalents for :hg:`log`::
161 161
162 162 -f -> ::.
163 163 -d x -> date(x)
164 164 -k x -> keyword(x)
165 165 -m -> merge()
166 166 -u x -> user(x)
167 167 -b x -> branch(x)
168 168 -P x -> !::x
169 169 -l x -> limit(expr, x)
170 170
171 171 Some sample queries:
172 172
173 173 - Changesets on the default branch::
174 174
175 175 hg log -r 'branch(default)'
176 176
177 177 - Changesets on the default branch since tag 1.5 (excluding merges)::
178 178
179 179 hg log -r 'branch(default) and 1.5:: and not merge()'
180 180
181 - Open branch heads::
182
183 hg log -r 'head() and not closed()'
184
181 185 - Changesets between tags 1.3 and 1.5 mentioning "bug" that affect
182 186 hgext/*::
183 187
184 188 hg log -r '1.3::1.5 and keyword(bug) and file("hgext/*")'
185 189
186 190 - Changesets in committed May 2008, sorted by user::
187 191
188 192 hg log -r 'sort(date("May 2008"), user)'
189 193
190 194 - Changesets mentioning "bug" or "issue" that are not in a tagged
191 195 release::
192 196
193 197 hg log -r '(keyword(bug) or keyword(issue)) and not ancestors(tagged())'
General Comments 0
You need to be logged in to leave comments. Login now