- Feb 15, 2022
-
-
Pierre-Yves David authored
This would work for a subset of action only. Our first target is dirstate-v2. Differential Revision: https://phab.mercurial-scm.org/D12196
-
Augie Fackler authored
This was showing up in an operation I was doing today, and I'd like to be able to get trace spans for it instead of just profiler samples. Differential Revision: https://phab.mercurial-scm.org/D12186
-
Augie Fackler authored
This was showing up in an operation I was doing today, and I'd like to be able to get trace spans for it instead of just profiler samples. Differential Revision: https://phab.mercurial-scm.org/D12185
-
- Feb 16, 2022
-
-
Martin von Zweigbergk authored
-
- Feb 12, 2022
-
-
Martin von Zweigbergk authored
The feature introduced in D2888 seems like a pure improvement to me. It makes the names' of temporary file easier to read. Let's have it always enabled. I also removed the config option for the path prefix because it doesn't seem useful. I asked Kyle (the author of the feature) about it and he couldn't think of a reason to keep it. I suspect it was just that we to have a config to turn it on/off while it was experimental, so it might as well be a configurable prefix then. Differential Revision: https://phab.mercurial-scm.org/D12171
-
- Feb 15, 2022
-
-
Pierre-Yves David authored
Special cases are not special enough, we align the option name on the other. The `version` value is undocumented for now as it can only have a single value. It is supported in the code to properly detect and abort if more value are introduced in the future value. Differential Revision: https://phab.mercurial-scm.org/D12184
-
- Nov 26, 2021
-
-
Raphaël Gomès authored
We use the `trace` level for the actual message because it can get really busy. Differential Revision: https://phab.mercurial-scm.org/D11814
-
- Feb 07, 2022
-
-
Euxane TRAN-GIRARD authored
This allows Python code to make use of the C implementation of the changelogv2 base operations when the C extensions are enabled. The `format_version` values are now shared between the C and Python sides, avoiding an additional translation for the selection of the format version to use. Differential Revision: https://phab.mercurial-scm.org/D12179
-
- Feb 14, 2022
-
-
Euxane TRAN-GIRARD authored
This introduces a C implementation of changelogv2 records packing and unpacking operations matching the pure Python counterpart, similarly to what we already have for revlogv1 and revlogv2. This is also necessary to access changelogv2 record fields from future Rust code without going through the Python part, which would annihilate any performance benefit. Differential Revision: https://phab.mercurial-scm.org/D12178
-
- Feb 15, 2022
-
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D12183
-
- Feb 14, 2022
-
-
Raphaël Gomès authored
In 9ebc10ad4a04 I updated `rustfmt` without touching hghave, which means that the CI has been skipping the format test ever since. Thankfully, only one offending line exists in the code that's been introduced since. Differential Revision: https://phab.mercurial-scm.org/D12180
-
- Feb 11, 2022
-
-
Raphaël Gomès authored
Due to the naive approach to path relative-ness, some tree shapes like the one introduced in the associated test could result in the packer going into an endless loop which allocated new `Node` objects endlessly until the process was killed by Linux's OOM killer. Differential Revision: https://phab.mercurial-scm.org/D12170
-
- Feb 15, 2022
-
-
Mathias De Mare authored
Differential Revision: https://phab.mercurial-scm.org/D12182
-
- Feb 10, 2022
-
-
Euxane TRAN-GIRARD authored
This is less error-prone. Differential Revision: https://phab.mercurial-scm.org/D12177
-
- Feb 11, 2022
-
-
Pierre-Yves David authored
The node is not guaranteed to be at the same location all the time (e.g: changelog v2), so let's use the official existing API to get that value. Differential Revision: https://phab.mercurial-scm.org/D12176
-
- Jan 28, 2022
-
-
Euxane TRAN-GIRARD authored
This replaces the naive rank computation with a more efficient incremental method, avoiding computing the whole ancestor set when possible. Differential Revision: https://phab.mercurial-scm.org/D12143
-
Pierre-Yves David authored
This adds a regression test for the computation of the rank, using the current values computed with the naive algorithm as the "golden" reference. Differential Revision: https://phab.mercurial-scm.org/D12142
-
Euxane TRAN-GIRARD authored
This adds a small test checking the rank computation in the case of a merge. Differential Revision: https://phab.mercurial-scm.org/D12141
-
Pierre-Yves David authored
This makes the stored rank property accessible, to be expanded and printed. Differential Revision: https://phab.mercurial-scm.org/D12140
-
Pierre-Yves David authored
This stores the rank (size of the ancestor set of a revision, including itself) in a changelog field and allows this property to be retrieved. This new property is used as part of stable-range computations, which will be introduced later on. The value is computed in a naive way from the definition of the rank. This will be replaced by a more efficient version subsequently. Differential Revision: https://phab.mercurial-scm.org/D12139
-
- Feb 14, 2022
-
-
Mathias De Mare authored
Differential Revision: https://phab.mercurial-scm.org/D12172
-
- Feb 08, 2022
-
-
Martin von Zweigbergk authored
`filemerge.filemerge()` returns `None` if no merge was necessary because the two sides were identical. I don't think it should be that function's responsibility to handle that case; we should ideally not even call `filemerge.filemerge()` if the two inputs identical. This patch therefore moves the check out to the caller (`mergestate.py`). The largefiles test changed because we now notice that the two sides made the same change, so we don't consider it a merge. Also note that the new message better matches the line above it in the test output. Differential Revision: https://phab.mercurial-scm.org/D12154
-
Martin von Zweigbergk authored
`filemerge.filemerge()` returns `None` if no merge was needed because the two sides were identical. I'd like to move that to the caller. This is a little refactoring to prepare for that. Differential Revision: https://phab.mercurial-scm.org/D12153
-
- Feb 07, 2022
-
-
Martin von Zweigbergk authored
The `ui` argument is no longer needed now that we don't handle `--print` in the library code. Differential Revision: https://phab.mercurial-scm.org/D12151
-
- Jan 18, 2022
-
-
Martin von Zweigbergk authored
Differential Revision: https://phab.mercurial-scm.org/D12150
-
Martin von Zweigbergk authored
When premerge is enabled (as it is for non-binary inputs by default) and the markers are not kept, we currently still write it to the output context and then restore the previous content right after. With the refactoring in the previous patch, we can easily avoid that step and instead write the output in the opposite case (i.e. when it's successful or when the markers are supposed to be kept). Differential Revision: https://phab.mercurial-scm.org/D12149
-
- Jan 14, 2022
-
-
Martin von Zweigbergk authored
The `mercurial.simplemerge` module still has some command-lines processing that doesn't belong in such a low-level module. This patch moves the handling of `hg simplemerge --print` to the extension by having `mercurial.simplemerge.simplemerge()` return the merged text. Differential Revision: https://phab.mercurial-scm.org/D12148
-
- Feb 10, 2022
-
-
Martin von Zweigbergk authored
The callers now do the checking for binary inputs and handle warnings and/or errors, so we can remove that code from the low-level `simplemerge` module now. After this patch we just raise an error unless the caller told us to allow binary inputs. Differential Revision: https://phab.mercurial-scm.org/D12169
-
Martin von Zweigbergk authored
This is similar to the previous patch, but here we put a specialized copy of `simplemerge._verifytext()` in the the `filemerge` module instead. Differential Revision: https://phab.mercurial-scm.org/D12147
-
Martin von Zweigbergk authored
The `simplemerge` module does too much UI-related things. This patch puts a specialized copy of `simplemerge._verifytext()` in the simplemerge extension. Differential Revision: https://phab.mercurial-scm.org/D12146
-
Martin von Zweigbergk authored
I want to be able to update the file contents for support for partial conflict resolution. Having the text available (and later settable) on `MergeInput` will enable that. Differential Revision: https://phab.mercurial-scm.org/D12144
-
- Feb 05, 2022
-
-
Martin von Zweigbergk authored
I'm about to add more logic and state to it. Differential Revision: https://phab.mercurial-scm.org/D12145
-
- Feb 10, 2022
-
-
Martin von Zweigbergk authored
The `simplemerge` module is library code; it should not get an unmodified `opts` dict from the `simplemerge` extension. Differential Revision: https://phab.mercurial-scm.org/D12152
-
- Feb 03, 2022
-
-
Pierre-Yves David authored
This extend f1eb77dceb36 to test and support the remaining action. Or, at least, the simple incarnation of them. Differential Revision: https://phab.mercurial-scm.org/D12181
-
- Jan 21, 2022
-
-
Simon Sapin authored
… when the repository root is under the current directory, so the kernel needs to traverse fewer directory in every call to `read_dir` or `symlink_metadata`. Better yet would be to use libc functions like `openat` and `fstatat` to remove such repeated traversals entirely, but the standard library does not provide APIs based on those. Maybe with a crate like https://crates.io/crates/openat instead? Benchmarks of `rhg status` show that this patch is neutral in some configurations, and makes the command up to ~20% faster in others. Below is semi-arbitrary subset of results. The four numeric columns are: time (in seconds) with this changeset’s parent, time with this changeset, time difference (negative is better), time ratio (less than 1 is better). ``` mercurial-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.0061 -> 0.0059: -0.0002 (0.97) mercurial-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0029 -> 0.0028: -0.0001 (0.97) mozilla-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.2110 -> 0.2102: -0.0007 (1.00) mozilla-dirstate-v2 | default-copies-clean.ignored.pbr | 0.0489 -> 0.0401: -0.0088 (0.82) mozilla-dirstate-v2 | default-copies-clean.no-iu.pbr | 0.0479 -> 0.0393: -0.0085 (0.82) mozilla-dirstate-v2 | default-copies-large.all.pbr | 0.1262 -> 0.1210: -0.0051 (0.96) mozilla-dirstate-v2 | default-copies-small.ignored-unknown.pbr | 0.1262 -> 0.1200: -0.0062 (0.95) mozilla-dirstate-v2 | default-copies-small.ignored.pbr | 0.0536 -> 0.0417: -0.0119 (0.78) mozilla-dirstate-v2 | default-copies-small.no-iu.pbr | 0.0482 -> 0.0393: -0.0089 (0.81) mozilla-dirstate-v2 | default-plain-clean.ignored.pbr | 0.0518 -> 0.0402: -0.0116 (0.78) mozilla-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0481 -> 0.0392: -0.0088 (0.82) mozilla-dirstate-v2 | default-plain-large.all.pbr | 0.1271 -> 0.1218: -0.0052 (0.96) mozilla-dirstate-v2 | default-plain-small.ignored-unknown.pbr | 0.1225 -> 0.1202: -0.0022 (0.98) mozilla-dirstate-v2 | default-plain-small.ignored.pbr | 0.0510 -> 0.0418: -0.0092 (0.82) mozilla-dirstate-v2 | default-plain-small.no-iu.pbr | 0.0480 -> 0.0394: -0.0086 (0.82) netbeans-dirstate-v1 | default-plain-clean.no-iu.pbr | 0.1442 -> 0.1422: -0.0020 (0.99) netbeans-dirstate-v2 | default-plain-clean.no-iu.pbr | 0.0325 -> 0.0282: -0.0043 (0.87) ``` Differential Revision: https://phab.mercurial-scm.org/D12175
-
- Feb 14, 2022
-
-
Simon Sapin authored
All `io::Error` cases are now handled through PatternFileWarning or BadMatch Differential Revision: https://phab.mercurial-scm.org/D12174
-
Simon Sapin authored
Differential Revision: https://phab.mercurial-scm.org/D12173
-
- Feb 07, 2022
-
-
sliquister authored
hg debugsparse supports arguments like --include, similar to `hg tracked --addinclude` or `hg log --include`. But in `hg debugsparse`, the pattern is not an argument of the flag, instead the patterns are the anonymous command line arguments. Not only is this surprising, it makes it impossible to use --include and --exclude in the same invocation, or --reset --exclude. So I propose making debugsparse making --include, --exclude take an argument, and rejecting anonymous command line arguments, as well as allowing mixing several of these flags in one invocations. Differential Revision: https://phab.mercurial-scm.org/D12155
-
- Feb 09, 2022
-
-
Mitchell Hentges authored
Previously, it was assumed that Windows environments with "xterm" in the TERM environment variable meant that either "virtual terminal mode" was already enabled, or that we are running in an environment that didn't need a "virtual terminal mode" (such as mintty, that interprets ANSI sequences itself). However, modern Cygwin and MSYS2 set TERM=xterm when using the Command Prompt as the terminal, which needs "virtual terminal mode" to be manually enabled. However, due to (issue6640), the vtmode wasn't being enabled. This patch ensures that we always try to enable vtmode on Windows regardless of the state of TERM, so that: * ANSI-based colors work in modern Cygwin/MSYS2 (with Command Prompt), and * The vtmode is unnecessarily set when running in a different terminal such as mintty, but it is simply redundant and doesn't appear to have ill effects. Differential Revision: https://phab.mercurial-scm.org/D12158
-
- Feb 10, 2022
-
-
Simon Sapin authored
The full test suite now passes with `hg` pointing to rhg. Differential Revision: https://phab.mercurial-scm.org/D12162
-