14686
|
1 |
Mercurial supports a functional language for selecting a set of
|
|
2 |
files.
|
|
3 |
|
|
4 |
Like other file patterns, this pattern type is indicated by a prefix,
|
|
5 |
'set:'. The language supports a number of predicates which are joined
|
|
6 |
by infix operators. Parenthesis can be used for grouping.
|
|
7 |
|
|
8 |
Identifiers such as filenames or patterns must be quoted with single
|
|
9 |
or double quotes if they contain characters outside of
|
|
10 |
``[.*{}[]?/\_a-zA-Z0-9\x80-\xff]`` or if they match one of the
|
|
11 |
predefined predicates. This generally applies to file patterns other
|
|
12 |
than globs and arguments for predicates.
|
|
13 |
|
|
14 |
Special characters can be used in quoted identifiers by escaping them,
|
|
15 |
e.g., ``\n`` is interpreted as a newline. To prevent them from being
|
|
16 |
interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``.
|
|
17 |
|
|
18 |
There is a single prefix operator:
|
|
19 |
|
|
20 |
``not x``
|
|
21 |
Files not in x. Short form is ``! x``.
|
|
22 |
|
|
23 |
These are the supported infix operators:
|
|
24 |
|
|
25 |
``x and y``
|
|
26 |
The intersection of files in x and y. Short form is ``x & y``.
|
|
27 |
|
|
28 |
``x or y``
|
|
29 |
The union of files in x and y. There are two alternative short
|
|
30 |
forms: ``x | y`` and ``x + y``.
|
|
31 |
|
|
32 |
``x - y``
|
|
33 |
Files in x but not in y.
|
|
34 |
|
|
35 |
The following predicates are supported:
|
|
36 |
|
|
37 |
.. predicatesmarker
|
|
38 |
|
|
39 |
Some sample queries:
|
|
40 |
|
|
41 |
- Show status of files that appear to be binary in the working directory::
|
|
42 |
|
|
43 |
hg status -A "set:binary()"
|
|
44 |
|
|
45 |
- Forget files that are in .hgignore but are already tracked::
|
|
46 |
|
|
47 |
hg forget "set:hgignore() and not ignored()"
|
|
48 |
|
|
49 |
- Find text files that contain a string::
|
|
50 |
|
|
51 |
hg locate "set:grep(magic) and not binary()"
|
|
52 |
|
|
53 |
- Find C files in a non-standard encoding::
|
|
54 |
|
|
55 |
hg locate "set:**.c and not encoding(ascii)"
|
|
56 |
|
|
57 |
- Revert copies of large binary files::
|
|
58 |
|
|
59 |
hg revert "set:copied() and binary() and size('>1M')"
|
|
60 |
|
|
61 |
- Remove files listed in files.lst that contain the letter a or b::
|
|
62 |
|
|
63 |
hg remove "set: 'listfile:foo.lst' and (**a* or **b*)"
|
|
64 |
|
|
65 |
See also :hg:`help patterns`.
|