fileset: reorder 'and' expression to evaluate basic patterns first
Timing of a crafted example (when disk cache is warm):
$ hg files set:'binary() and path:contrib'
(orig) time: real 0.140 secs (user 0.120+0.000 sys 0.020+0.000)
(new) time: real 0.040 secs (user 0.030+0.000 sys 0.010+0.000)
fileset: roughly adjust weights of functions
... in order to move status predicates far away from basic patterns. I don't
know if each weight is appropriate, but it should be good enough as a start.
fileset: add stub for weight-based optimization
The main purpose of this change is to group basic patterns, which can be
mapped to a plain matcher. I'm not so interested in a weight of each function.
fileset: reject 'negate' node early while transforming parsed tree
That's how a 'negate' node is processed in revset.
fileset: drop 'group' node from tree to be evaluated
This helps rewriting a parsed tree.
fileset: add phase to transform parsed tree
This isn't strictly necessary, but I decided to just follow the strategy
of the revset parsing.
py3: whitelist another 3 tests caught by the ratchet
Differential Revision: https://phab.mercurial-scm.org/D4069
testrunner: allow multiple #testcases
This lets you have multiple #testcases declarations and they're taken
to be different dimensions of the test, so their cross product becomes
the total set of test cases. For example:
#testcases obsstore-on obsstore-off
#testcases manifest-flat manifest-tree
$ hg rebase ...
...
#if obsstore-on
$ hg log ...
#endif
Note that this is an excellent way to slow down the test suite, so use
it with care.
The feature is implemented by replacing most of the "case" variables
that were strings before by an array of strings with each item a
different dimension of the test case. The file names are created by
joining the dimensions by "#"
(e.g. test-foo.t#obsstore-on#manifest-flat).
Differential Revision: https://phab.mercurial-scm.org/D4049
testrunner: use "#" for "test cases" suffix in .err filename too
This seems like a natural follow-up to
b865bba56db1 (run-tests: update
the test case name format, 2018-05-13).
Differential Revision: https://phab.mercurial-scm.org/D4052
resolve: add confirm config option
This config setting gives a functionality to confirm before
it re-merge all unresolved files. If this config is enabled,
when you run 'hg resolve --all' it will prompt with a msg
"re-merge all unresolved files (yn)?"
To enable this functionality:
[commands]
resolve.confirm = True
Differential Revision: https://phab.mercurial-scm.org/D3988