- May 26, 2020
-
-
sliquister authored
so `hg clone -q` or `hg pull -q` don't print `abort: no suitable response from remote hg!` with no indication of what went wrong. There are other errors still silenced by -q (like failing to push due to a server hook), but the current change covers a good fraction of the problem (all errors setting up the ssh connection, no such remote repository, no access to the repository). Differential Revision: https://phab.mercurial-scm.org/D8584
-
sliquister authored
Differential Revision: https://phab.mercurial-scm.org/D8583
-
sliquister authored
Running commands from the root is commmon, in particular for automation. Running `hg files > /tmp/a` from the root of mozilla-central on linux: before: real 0m1,510s user 0m1,387s sys 0m0,090s after: real 0m1,266s user 0m1,165s sys 0m0,073s (there are 280k paths, so this was costing ~1us per path somehow) Differential Revision: https://phab.mercurial-scm.org/D8585
-
- May 18, 2020
-
-
Augie Fackler authored
This will let us have the mergestate storage be controlled by the context. In particular, for working contexts we should use the existing mergestate, but for overlay contexts it's inappropriate to drop files in .hg/merge. Differential Revision: https://phab.mercurial-scm.org/D8551
-
Augie Fackler authored
There's already some pretty reasonable encapsulation here, but I want to make the mergestate storage a property of the context so memctx instances can do a reasonable thing. This is the first step in a reshuffle to make that easier. Differential Revision: https://phab.mercurial-scm.org/D8550
-
Augie Fackler authored
Differential Revision: https://phab.mercurial-scm.org/D8548
-
Augie Fackler authored
This at least does a basic test of the method. It's not super-complete, but it's better than the nothing we'd otherwise have. Differential Revision: https://phab.mercurial-scm.org/D8547
-
Augie Fackler authored
Differential Revision: https://phab.mercurial-scm.org/D8549
-
- May 26, 2020
-
-
Martin von Zweigbergk authored
-
- May 14, 2020
-
-
Manuel Jacob authored
On older Python versions, Mercurial is not really usable because of https://bugs.python.org/issue10211. Recently someone reported a crash on the mailing list when running Mercurial on Python 2.7.3. There was consensus that fixing compatibility for a Python version more than 7 years old is not worth it. So, instead of making Mercurial crash with an obscure exception, this patch raises the minimum Python version to 2.7.4.
-
- May 19, 2020
-
-
Connor Sheehan authored
Callers of `fsmonitor.state.setlastclock` pass their arguments wrapped in `pycompat.sysbytes` to ensure the value is a `bytes` on Python 3. However in `fsmonitor.poststatus.__call__`, if the return value of `getlastclock()` is `None`, we use the value of `fsmonitor.poststatus._startclock` instead, which is not converted to a byte string in the same manner. This commit converts the value of `startclock` to a byte string using `pycompat.sysbytes` in the constructor for `poststatus`, to avoid the "`str` + `bytes`" error from issue 6321. Differential Revision: https://phab.mercurial-scm.org/D8573
-
- May 15, 2020
-
-
Charles Chamberlain authored
The call to `sorted(hooks.values())` can on line 213 of hooks.py can raise when using python 3. For instance, when hooks.values is `[(0, 2, b'post-commit.check-status', b''), (None, None, b'changegroup.app-hooks', <object object at 0x7f5279885590>)]`, the error is `TypeError: '<' not supported between instances of 'NoneType' and 'int'` This fix keeps the same order that was used in python 2 without relying on comparison with None. Differential Revision: https://phab.mercurial-scm.org/D8527
-
- May 17, 2020
-
-
sliquister authored
`hg grep qqqq` in the mercurial repo: before: 0,859s after: 0,233s `hg grep somethingwithnomatch` in mozilla-central: before: 51s after: 19s This is probably also a tiny bug fix, because the code was looking up a node for filename `pfn` on a filelog for filename `fn`, which are most of the time the same filename, but don't have to be. Ignoring performance and the bug fix, the code should have the same behavior. Differential Revision: https://phab.mercurial-scm.org/D8545
-
sliquister authored
This is one reason why `hg grep pattern` essentially does `hg cat -r . 'set:**'` inside. There is no speed improvement in this commit, because the rest of the code still greps data from filelog instead of working copy when possible. Differential Revision: https://phab.mercurial-scm.org/D8544
-
sliquister authored
Differential Revision: https://phab.mercurial-scm.org/D8543
-
sliquister authored
Differential Revision: https://phab.mercurial-scm.org/D8542
-
- Feb 27, 2020
-
-
Steve Fink authored
Differential Revision: https://phab.mercurial-scm.org/D8525
-
- May 17, 2020
-
-
sliquister authored
It prints this kind of stuff by default: Compiling regex v1.3.6 Compiling rand v0.7.3 Compiling crossbeam-deque v0.7.3 which is way better than we ask for before this change, which is screen after screen of compilation commands and irrelevant warnings in crates we use. Differential Revision: https://phab.mercurial-scm.org/D8537
-
- May 11, 2020
-
-
Romain DEP. authored
Differential Revision: https://phab.mercurial-scm.org/D8540
-
Romain DEP. authored
Differential Revision: https://phab.mercurial-scm.org/D8541
-
Romain DEP. authored
Differential Revision: https://phab.mercurial-scm.org/D8539
-
- May 17, 2020
-
-
sliquister authored
If there's a reason to use mut (like compability with older compilers), then we should stick `#[allow(unused_mut)]` on the declaration. Differential Revision: https://phab.mercurial-scm.org/D8538
-
- Apr 14, 2020
-
-
Pierre-Yves David authored
The requirements is now recognised and dealt with and the associated files properly handled. The persistent nodemap should be ready for usage in the field now. Differential Revision: https://phab.mercurial-scm.org/D8431
-
- May 12, 2020
-
-
Raphaël Gomès authored
Repeating the performance numbers from the `hg-core` change: Running `hg clean/purge` on Netbeans' repo (100k files): ``` | No-op | 30% unknown -------------------------- Rust | 1.0s | 1.67s C | 2.0s | 2.87s ``` Differential Revision: https://phab.mercurial-scm.org/D8520
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8519
-
Raphaël Gomès authored
Some commands (`hg purge` notably) register the `traversedir` callback on their matcher to run said callback every time a directory is traversed. This is the first of three patches, further broadening Rust support for status. Unfortunately, there is no way around collecting a full `Vec` (or any other owned datastructure, like a radix tree) and pushing it back up the Python layer since keeping the Python callback in a closure would mean giving up multithreading because of the GIL, which is obviously unacceptable. Performance is still a lot better than the Python+C path. Running `hg clean/purge` on Netbeans' repo (100k files): ``` | No-op | 30% unknown -------------------------- Rust | 1.0s | 1.67s C | 2.0s | 2.87s ``` Differential Revision: https://phab.mercurial-scm.org/D8518
-
Raphaël Gomès authored
This usually isn't a (functional) problem since we ignore the unknown files anyway, but when specifically using `hg purge`, unknown files were iterated over regardless of the option being true. This is both more correct and more efficient. Differential Revision: https://phab.mercurial-scm.org/D8517
-
Raphaël Gomès authored
This is a gratuitous cleanup. Differential Revision: https://phab.mercurial-scm.org/D8516
-
- Apr 30, 2020
-
-
Jörg Sonnenberger authored
External hooks are skipped here as the environment often has a size limit in the low MBs and that can easily be reached by larger transactions. Differential Revision: https://phab.mercurial-scm.org/D8490
-
- May 07, 2020
-
-
Raphaël Gomès authored
This makes sure it's not modified. Differential Revision: https://phab.mercurial-scm.org/D8508
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8507
-
Raphaël Gomès authored
It turns out that the way I tried to work around `regex`'s behavior difference with `re2` and Python's `re` was 1) buggy and 2) much more complicated than needed. In a few words: `regex` adds `.*` on either side of patterns when no start or end anchor is present. My previous workaround put `^` or `$` for every pattern, which is wrong even without the other 2 bugs on top of it. Using `^(?:<patterns>)` right at the end of the `regex` path fixes the issue. I've opened an issue to get a build option instead: https://github.com/rust-lang/regex/issues/675 Differential Revision: https://phab.mercurial-scm.org/D8506
-
Augie Fackler authored
This will allow us to pass in-memory contexts that may not have a valid node to the diffing logic. Differential Revision: https://phab.mercurial-scm.org/D8503
-
- May 18, 2020
-
-
Martin von Zweigbergk authored
This is the same thing as we've done for the previous few releases. Differential Revision: https://phab.mercurial-scm.org/D8546
-
- May 11, 2020
-
-
Pierre-Yves David authored
Before this change, it was possible for the changelog to be loaded before the dirstate. If a transaction happens betwen the changelog and dirstate reading, the dirstate can up end poitning toward a revision not existing in the (olded) changelog. This lead to a warning. With this revision, we preload the dirstate parent before reading the changelog. This has a negligible performance impact on performance for all case we are tracking. Differential Revision: https://phab.mercurial-scm.org/D8528
-
- May 07, 2020
-
-
Augie Fackler authored
I'm about to write some code that wants to pass a memctx to diffordiffstat, but this feels like a meritorious cleanup anyway, since the first thing this method does is turn nodes into contexts, and most callers have a context handy. Differential Revision: https://phab.mercurial-scm.org/D8502
-
- May 12, 2020
-
-
Rodrigo Damazio Bovendorp authored
This meets the Bazel style guide: https://docs.bazel.build/versions/master/skylark/bzl-style.html and was mostly done automatically with buildifier. Differential Revision: https://phab.mercurial-scm.org/D8521
-
- May 11, 2020
-
-
Raphaël Gomès authored
A future patch for issue 6303 reveals a big performance regression in the Rust `DirstateMap` that reads the entire dirstate when requesting parents instead of the first 40 bytes. `perfdiscovery` gets a *significant* speedup (from 0.101 to 0.016) when applied against said patch. I'm assuming it has other performance benefits, but this is already a good enough win. Differential Revision: https://phab.mercurial-scm.org/D8513
-
- May 14, 2020
-
-
Valentin Gatien-Baron authored
Specifically, when `changes` is: [(b'@upstream-committed', None, <function ui.status>, b'updating bookmark @upstream-committed\n'), (b'@upstream-committed', binary-node, <function ui.warn>, b'divergent bookmark @ stored as @upstream-committed\n')] sorting the list raises: TypeError: '<' not supported between instances of 'bytes' and 'NoneType' Differential Revision: https://phab.mercurial-scm.org/D8523
-
- May 12, 2020
-
-
Jörg Sonnenberger authored
For time zones, git doesn't consider +0 and -0 the same timezone, so use the former canonically. Add a test case to ensure that non-UTC offsets are handled correctly. The real name part of the committer name is normally not quoted, so don't enforce that. Differential Revision: https://phab.mercurial-scm.org/D8522
-