##// END OF EJS Templates
rust: module policy with importrust...
rust: module policy with importrust We introduce two rust+c module policies and a new `policy.importrust()` that makes use of them. This simple approach provides runtime switching of implementations, which is crucial for the performance measurements such as those Octobus does with ASV. It can also be useful for bug analysis. It also has the advantage of making conditionals in Rust callers more uniform, in particular abstracting over specifics like `demandimport` At this point, the build stays unchanged, with the rust-cpython based `rustext` module being built if HGWITHRUSTEXT=cpython. More transparency for the callers, i.e., just using `policy.importmod` would be a much longer term and riskier effort for the following reasons: 1. It would require to define common module boundaries for the three or four cases (pure, c, rust+ext, cffi) and that is premature with the Rust extension currently under heavy development in areas that are outside the scope of the C extensions. 2. It would imply internal API changes that are not currently wished, as the case of ancestors demonstrates. 3. The lack of data or property-like attributes (tp_member and tp_getset) in current `rust-cpython` makes it impossible to achieve direct transparent replacement of pure Python classes by Rust extension code, meaning that the caller sometimes has to be able to make adjustments or provide additional wrapping.

File last commit:

r35759:73432eee default
r42651:810f66b4 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*)"