##// END OF EJS Templates
namespaces: let namespaces override singlenode() definition...
namespaces: let namespaces override singlenode() definition Some namespaces have multiple nodes per name (meaning that their namemap() returns multiple nodes). One such namespace is the "topics" namespace (from the evolve repo). We also have our own internal namespace at Google (for review units) that has multiple nodes per name. These namespaces may not want to use the default "pick highest revnum" resolution that we currently use when resolving a name to a single node. As an example, they may decide that `hg co <name>` should check out a commit that's last in some sense even if an earlier commit had just been amended and thus had a higher revnum [1]. This patch gives the namespace the option to continue to return multiple nodes and to override how the best node is picked. Allowing namespaces to override that may also be useful as an optimization (it may be cheaper for the namespace to find just that node). I have been arguing (in D3715) for using all the nodes returned from namemap() when resolving the symbol to a revset, so e.g. `hg log -r stable` would resolve to *all* nodes on stable, not just the one with the highest revnum (except that I don't actually think we should change it for the branch namespace because of BC). Most people seem opposed to that. If we decide not to do it, I think we can deprecate the namemap() function in favor of the new singlenode() (I find it weird to have namespaces, like the branch namespace, where namemap() isn't nodemap()'s inverse). I therefore think this patch makes sense regardless of what we decide on that issue. [1] Actually, even the branch namespace would have wanted to override singlenode() if it had supported multiple nodes. That's because closes branch heads are mostly ignored, so "hg co default" will not check out the highest-revnum node if that's a closed head. Differential Revision: https://phab.mercurial-scm.org/D3852

File last commit:

r35759:73432eee default
r38505:4c068365 @58 default
Show More
filesets.txt
79 lines | 2.1 KiB | text/plain | TextLexer
Matt Mackall
fileset: add a help topic...
r14686 Mercurial supports a functional language for selecting a set of
Mads Kiilerich
check-code: check txt files for trailing whitespace
r18960 files.
Matt Mackall
fileset: add a help topic...
r14686
Like other file patterns, this pattern type is indicated by a prefix,
'set:'. The language supports a number of predicates which are joined
by infix operators. Parenthesis can be used for grouping.
Identifiers such as filenames or patterns must be quoted with single
or double quotes if they contain characters outside of
``[.*{}[]?/\_a-zA-Z0-9\x80-\xff]`` or if they match one of the
predefined predicates. This generally applies to file patterns other
Yuya Nishihara
fileset: add kind:pat operator...
r35759 than globs and arguments for predicates. Pattern prefixes such as
``path:`` may be specified without quoting.
Matt Mackall
fileset: add a help topic...
r14686
Special characters can be used in quoted identifiers by escaping them,
e.g., ``\n`` is interpreted as a newline. To prevent them from being
interpreted, strings can be prefixed with ``r``, e.g. ``r'...'``.
Matt Harbison
help: apply the section headings from revsets to filesets...
r30729 See also :hg:`help patterns`.
Matt Harbison
help: merge the various operator sections of revsets, filesets and templates...
r30731 Operators
=========
Matt Harbison
help: apply the section headings from revsets to filesets...
r30729
Matt Mackall
fileset: add a help topic...
r14686 There is a single prefix operator:
``not x``
Files not in x. Short form is ``! x``.
These are the supported infix operators:
``x and y``
The intersection of files in x and y. Short form is ``x & y``.
``x or y``
The union of files in x and y. There are two alternative short
forms: ``x | y`` and ``x + y``.
``x - y``
Files in x but not in y.
Matt Harbison
help: apply the section headings from revsets to filesets...
r30729 Predicates
==========
Matt Mackall
fileset: add a help topic...
r14686 The following predicates are supported:
.. predicatesmarker
Matt Harbison
help: apply the section headings from revsets to filesets...
r30729 Examples
========
Matt Mackall
fileset: add a help topic...
r14686 Some sample queries:
- Show status of files that appear to be binary in the working directory::
hg status -A "set:binary()"
- Forget files that are in .hgignore but are already tracked::
hg forget "set:hgignore() and not ignored()"
- Find text files that contain a string::
FUJIWARA Katsunori
help: use "hg files" instead of "hg locate" in "hg help filesets"...
r23109 hg files "set:grep(magic) and not binary()"
Matt Mackall
fileset: add a help topic...
r14686
- Find C files in a non-standard encoding::
FUJIWARA Katsunori
help: use "hg files" instead of "hg locate" in "hg help filesets"...
r23109 hg files "set:**.c and not encoding('UTF-8')"
Matt Mackall
fileset: add a help topic...
r14686
- Revert copies of large binary files::
hg revert "set:copied() and binary() and size('>1M')"
Pierre-Yves David
fileset: add revs(revs, fileset) to evaluate set in working directory...
r31193 - Revert files that were added to the working directory::
Yuya Nishihara
help: fix example of revs() fileset
r31286 hg revert "set:revs('wdir()', added())"
Pierre-Yves David
fileset: add revs(revs, fileset) to evaluate set in working directory...
r31193
Arne Babenhauserheide
help: fileset foo.lst was named files.lst
r14829 - Remove files listed in foo.lst that contain the letter a or b::
Matt Mackall
fileset: add a help topic...
r14686
Yuya Nishihara
fileset: add kind:pat operator...
r35759 hg remove "set: listfile:foo.lst and (**a* or **b*)"