- Feb 29, 2020
-
-
Pulkit Goyal authored
This introduces a new flag to pull command `--confirm` and also a config option named `pull.confirm` which if used will prompt user describing changes which are pulled and asking whether to accept them or not. Differential Revision: https://phab.mercurial-scm.org/D8200
-
Pulkit Goyal authored
We have a list of summary callbacks which are run after the transaction is closed to show what has changed and what not. This patch makes it possible to register those callbacks as transaction validators so that we can show summary before committing the transaction and prompt user to accept the changes. The goal of this is to implement `pull --confirm`. Differential Revision: https://phab.mercurial-scm.org/D8199
-
Pulkit Goyal authored
This will help us in adding more validators which can aggregate data from transaction and prompt user whether to commit the transaction or not. The current target is to use this to implement `pull --confirm`. Differential Revision: https://phab.mercurial-scm.org/D8198
-
- Mar 04, 2020
-
-
Pulkit Goyal authored
httppeer (and maybe others too) does not have a store attribute. This was causing `hg pull` being broken on a hg repository when the extension is enabled. localpeer.local() does returns a non-None value but I am not sure if it matters. Differential Revision: https://phab.mercurial-scm.org/D8217
-
- Mar 06, 2020
-
-
Raphaël Gomès authored
This change makes use of the newly added logging infrastructure to trace the execution time of some important calls. This approach is very much complementary to using a profiler and will not guard against out-of-order execution or other kinds of compiler optimizations. That said, it is useful to get a rough high-level idea of where time is spent. Differential Revision: https://phab.mercurial-scm.org/D8253
-
Raphaël Gomès authored
This change adds the `log` crate, the community-approved logging facade backed by Rust core developers as well as the logging-consumer crate `simple_logger` to build a foundation for logging from Rust. Using this setup allows us to choose how to log depending on the way `hg-core` is used: if it's within the context of `hg-cpython`, we might not want to use it the same way as with a direct cli for example. Differential Revision: https://phab.mercurial-scm.org/D8252
-
Raphaël Gomès authored
Using `rayon` for this task ensures that we are using the same work-stealing threadpool for everything. This change introduces `crossbeam` as an explicit dependency, although it is already a dependency of `rayon`. It provides better structures for multi-threaded tasks than the stdlib. Differential Revision: https://phab.mercurial-scm.org/D8251
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8250
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8249
-
- Feb 19, 2020
-
-
Raphaël Gomès authored
I have looked into traversing the working directory in parallel either by a recursive or an iterative algorithm. The recursive approach won quite decisively both in terms of performance and code readability. You can look at my experiment here: https://heptapod.octobus.net/Alphare/rayon-recursive-traversal The chance of a stack overflow happening because the directories get too nested seems slim. This change does not yet do anything in parallel. Differential Revision: https://phab.mercurial-scm.org/D8215
-
- Mar 04, 2020
-
-
Raphaël Gomès authored
The usual recommendation for using `RwLock` or `Mutex` is that if there are about as many write as there are reads, use `Mutex`, and if there are more reads than writes, use `RwLock`. If after the main bottleneck (i.e. parallel traversal) is removed this shows up on profiles, we should investigate using the `parking_lot` since we don't need a poisoning API, or maybe move to different types of caches entirely. Differential Revision: https://phab.mercurial-scm.org/D8213
-
Raphaël Gomès authored
I forgot this when rewriting this logic during the review process. Differential Revision: https://phab.mercurial-scm.org/D8212
-
Raphaël Gomès authored
Right now, splitting with a max of 1 parts is useless. Differential Revision: https://phab.mercurial-scm.org/D8211
-
- Mar 05, 2020
-
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8226
-
Raphaël Gomès authored
This will be mostly used in `debuginstall`. Differential Revision: https://phab.mercurial-scm.org/D8225
-
- Jan 24, 2020
-
-
Raphaël Gomès authored
This change also adds a test case for subrepos. Repeating the benchmark information from the `hg-core` commit: On the Netbeans repository: C: 840ms Rust+C: 556ms Mozilla Central with the one pattern that causes a fallback removed: C: 2.315s Rust+C: 1.700s Differential Revision: https://phab.mercurial-scm.org/D7931
-
- Jan 17, 2020
-
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D7930
-
Raphaël Gomès authored
A lot of performance remains to be gained, most notably by doing more things in parallel, but also by caching, not falling back to Python but switching to another regex engine, etc.. I have measured on multiple repositories that this change, when in combination with the next two patches, improve bare `hg status` performance, and has no observable impact when falling back (because it does so early). On the Netbeans repository: C: 840ms Rust+C: 556ms Mozilla Central with the one pattern that causes a fallback removed: C: 2.315s Rust+C: 1.700 s Differential Revision: https://phab.mercurial-scm.org/D7929
-
- Feb 06, 2020
-
-
Raphaël Gomès authored
This change also introduces helper structs to make things clearer. Differential Revision: https://phab.mercurial-scm.org/D7928
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8088
-
Raphaël Gomès authored
"Result" has a special meaning in the Rust world, this should be clearer. Differential Revision: https://phab.mercurial-scm.org/D8087
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8086
-
- Jan 17, 2020
-
-
Raphaël Gomès authored
I debated moving it to utils, but it is not used anywhere else for now, and its skip behavior is pretty specific to status. Differential Revision: https://phab.mercurial-scm.org/D7927
-
Raphaël Gomès authored
This is a big change but all of the pieces call each other, so it makes sense to have this all in one patch. Differential Revision: https://phab.mercurial-scm.org/D7925
-
Raphaël Gomès authored
This function will be used to help build the upcoming `IncludeMatcher`. Differential Revision: https://phab.mercurial-scm.org/D7924
-
Raphaël Gomès authored
These functions will be used to help build the upcoming `IncludeMatcher`. Differential Revision: https://phab.mercurial-scm.org/D7923
-
Raphaël Gomès authored
This function will be used to help build the upcoming `IncludeMatcher`. While Re2 is still used and behind a feature flag, this function returns an error meant for fallback in the default case. Differential Revision: https://phab.mercurial-scm.org/D7922
-
- Mar 10, 2020
-
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8270
-
- Feb 27, 2020
-
-
Pierre-Yves David authored
It is better to have a lagging nodemap than a nodemap pointing to node that does not exists yet. (strictly speaking, the order was already right, however we make it more explicit). Differential Revision: https://phab.mercurial-scm.org/D8188
-
Pierre-Yves David authored
We make sure hooks can read persistent nodemap data and that they access something up-to-date with the pending transaction. Differential Revision: https://phab.mercurial-scm.org/D8187
-
Pierre-Yves David authored
Differential Revision: https://phab.mercurial-scm.org/D8184
-
Pierre-Yves David authored
This is all the requirement I can think off. More might be added as they emerge. The first ones are mostly simple technical matters that will be taken care of soon. The question about the "status" of the persistent nodemap and the revlogs that will use it requires more discussion and thinking. Differential Revision: https://phab.mercurial-scm.org/D8181
-
- Feb 18, 2020
-
-
Pierre-Yves David authored
The persistent nodemap requires the rust index to be used to provides any gains. So we automatically enable it for revlog using the persistent nodemap. We keep it off for other revset because now that the rust revlog fully initialise the nodemap using it everywhere introduce a fairly significant regression (eg: hg diff moving from 0.8s to 2.3s on mozilla-try) Differential Revision: https://phab.mercurial-scm.org/D8164
-
Pierre-Yves David authored
It is better to run the actual code when generating a new nodemap cache from scratch. So we do. Differential Revision: https://phab.mercurial-scm.org/D8163
-
- Feb 12, 2020
-
-
Georges Racinet authored
Differential Revision: https://phab.mercurial-scm.org/D8161
-
Georges Racinet authored
Differential Revision: https://phab.mercurial-scm.org/D8160
-
Georges Racinet authored
Differential Revision: https://phab.mercurial-scm.org/D8159
-
Georges Racinet authored
Differential Revision: https://phab.mercurial-scm.org/D8158
-
Raphaël Gomès authored
Differential Revision: https://phab.mercurial-scm.org/D8157
-
- Feb 11, 2020
-
-
Georges Racinet authored
This also updates the copyright notice Differential Revision: https://phab.mercurial-scm.org/D8156
-