|
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 |
|
9 ``[._a-zA-Z0-9\x80-\xff]`` or if they match one of the predefined |
|
10 predicates. |
|
11 |
|
12 Special characters can be used in quoted identifiers by escaping them, |
|
13 e.g., ``\n`` is interpreted as a newline. To prevent them from being |
|
14 interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``. |
|
15 |
|
16 There is a single prefix operator: |
|
17 |
|
18 ``not x`` |
|
19 Changesets not in x. Short form is ``! x``. |
|
20 |
|
21 These are the supported infix operators: |
|
22 |
|
23 ``x::y`` |
|
24 A DAG range, meaning all changesets that are descendants of x and |
|
25 ancestors of y, including x and y themselves. If the first endpoint |
|
26 is left out, this is equivalent to ``ancestors(y)``, if the second |
|
27 is left out it is equivalent to ``descendants(x)``. |
|
28 |
|
29 An alternative syntax is ``x..y``. |
|
30 |
|
31 ``x:y`` |
|
32 All changesets with revision numbers between x and y, both |
|
33 inclusive. Either endpoint can be left out, they default to 0 and |
|
34 tip. |
|
35 |
|
36 ``x and y`` |
|
37 The intersection of changesets in x and y. Short form is ``x & y``. |
|
38 |
|
39 ``x or y`` |
|
40 The union of changesets in x and y. There are two alternative short |
|
41 forms: ``x | y`` and ``x + y``. |
|
42 |
|
43 ``x - y`` |
|
44 Changesets in x but not in y. |
|
45 |
|
46 The following predicates are supported: |
|
47 |
|
48 .. predicatesmarker |
|
49 |
|
50 Command line equivalents for :hg:`log`:: |
|
51 |
|
52 -f -> ::. |
|
53 -d x -> date(x) |
|
54 -k x -> keyword(x) |
|
55 -m -> merge() |
|
56 -u x -> user(x) |
|
57 -b x -> branch(x) |
|
58 -P x -> !::x |
|
59 -l x -> limit(expr, x) |
|
60 |
|
61 Some sample queries: |
|
62 |
|
63 - Changesets on the default branch:: |
|
64 |
|
65 hg log -r "branch(default)" |
|
66 |
|
67 - Changesets on the default branch since tag 1.5 (excluding merges):: |
|
68 |
|
69 hg log -r "branch(default) and 1.5:: and not merge()" |
|
70 |
|
71 - Open branch heads:: |
|
72 |
|
73 hg log -r "head() and not closed()" |
|
74 |
|
75 - Changesets between tags 1.3 and 1.5 mentioning "bug" that affect |
|
76 ``hgext/*``:: |
|
77 |
|
78 hg log -r "1.3::1.5 and keyword(bug) and file('hgext/*')" |
|
79 |
|
80 - Changesets in committed May 2008, sorted by user:: |
|
81 |
|
82 hg log -r "sort(date('May 2008'), user)" |
|
83 |
|
84 - Changesets mentioning "bug" or "issue" that are not in a tagged |
|
85 release:: |
|
86 |
|
87 hg log -r "(keyword(bug) or keyword(issue)) and not ancestors(tagged())" |