- Nov 07, 2023
-
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
- Nov 06, 2023
-
-
Pierre-Yves David authored
The revisions that are not part of the "working" set by other means should not be considered for the evolution related computation. This impact the test introduced in 5f9af8422b31 as this is actually a more semantic fix of the issue.
-
Pierre-Yves David authored
This is a useful function to get the revision relevant to these computation, lets make sure all code use it, so that we can improve that `_mutablerevs` function in a later changeset.
-
Pierre-Yves David authored
This is a useful function to get the revision relevant to these computation, lets make sure all code use it, so that we can improve that `_mutablerevs` function in a later changeset.
-
Raphaël Gomès authored
Since Rust 1.51.0, Cargo has support for a better dependency resolver. Workspace packages (like ours) need to explicitely set the field, so let's. https://doc.rust-lang.org/edition-guide/rust-2021/default-cargo-resolver.html
-
Raphaël Gomès authored
Our current version of clippy is older than the latest stable. The newest version has new lints that are moslty good advice, so let's apply them ahead of time. This has the added benefit of reducing the noise for developpers like myself that use clippy as an IDE helper, as well as being more prepared for a future clippy upgrade.
-
Raphaël Gomès authored
See explanation inline.
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
- Nov 01, 2023
-
-
Martin von Zweigbergk authored
This fixes the bug I demonstrated in the previous commit, but I'm not sure at all if it's the right way of doing it.
-
Martin von Zweigbergk authored
-
- Oct 18, 2023
-
-
Raphaël Gomès authored
Concretely, this command: ``` $ echo hg up -r <nodeid>; time hg revert dir1 dir2 -r <othernode> --debug hg up -r <nodeid> real 0m14.690s user 0m14.766s sys 0m5.430s ``` was much slower despite using 16 cores before this change. The approach taken here is the same one used in match.py, in exactmatcher. This changeset was originally written by Valentin Gatien-Baron in a private repository. I have redacted the commit message and did a minor clean up of the code.
-
- Oct 27, 2023
-
-
Pierre-Yves David authored
This can provides a massive boost to the reading of multiple revision and the computation of a valid delta chain. This greatly help operation like `hg log --patch`, delta computation (helping pull/unbundle), linkrev adjustment (helping copy tracing). A first round of benchmark for `hg log --patch --limit 1000` shows improvement in the 10-20% range on "small" repository like pypy or mercurial and large improvements (about 33%) for more complex ones like netbeans and mozilla's. These speeds up are consistent with the improvement to `hg pull` (from a server sending poor deltas) I saw benchmarking this last year. Further benchmark will be run during the freeze. I added some configuration in the experimental space to be able to further test the effect of various tuning for now. This feature should fit well in the "usage/resource profile" configuration that we should land next cycle. When it does not provides a benefit the overhead of the cache seem to be around 2%, a small price for the big improvement. In addition I believe we could shave most of this overhead with a more efficent lru implementation.
-
Pierre-Yves David authored
We will introduce some caching in this method in the next changeset, we make some of the most "disruptive" change first as touching this could break (and maybe did during the development process).
-
- Oct 24, 2023
-
-
Pierre-Yves David authored
Instead of hacking throught the vfs/opener, we implement the delay/divert logic inside the `_InnerRevlog` and `randomaccessfile` object. This will allow to an alternative implementation of the `_InnerRevlog` that does not need to use Python details. As a result, the new implementation can use the transaction less agressively and avoid some extra output since no data had been written yet. That seems like a good side effect.
-
- Oct 26, 2023
-
-
Pierre-Yves David authored
This is currently the same and the index_file but it will become more complex when we start doing delayed write.
-
Pierre-Yves David authored
To avoid reaching inside the inner object in the future, we needs some official API. We put one of such API early to reduce the size of the final diff.
-
Pierre-Yves David authored
We want to move the delay/divert logic at the revlog level (to have all IO related logic in the _InnerRevlog) we start with small piece that are easy to move on their own.
-
- Oct 20, 2023
-
-
Pierre-Yves David authored
Theses assert shows we never call delay or divert if the revlog hold file handle on the revlog's file.
-
- Oct 25, 2023
-
-
Pierre-Yves David authored
The invalidation of data that belong to the inner object can and should be delegated to the inner object.
-
- Oct 24, 2023
-
-
Pierre-Yves David authored
I cannot find a case where this is actually useful, so lets triggering strip in the middle of uncommitted transaction.
-
- Oct 19, 2023
-
-
Pierre-Yves David authored
This is the second big piece of API we want to live on the inner object. With this the inner object have freedom it needs to implement things internally. (except for the delayed write feature of the changelog, that will be migrated in coming changesets)
-
Pierre-Yves David authored
Same object as rawtext, but for sidedata.
-
Pierre-Yves David authored
This is one of the current core goal of the inner object: having a "simple" API for some of the core revlog action, like getting a raw text, with the inner object able to do that part internally, on its own.
-
Pierre-Yves David authored
The goal for this inner object is to compute that things we cache, it make more sense to have the inner object handle it directly.
-
Pierre-Yves David authored
This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
-
Pierre-Yves David authored
This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
-
- Oct 25, 2023
-
-
Pierre-Yves David authored
This will be needed for the next changeset.
-
- Oct 19, 2023
-
-
Pierre-Yves David authored
This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
-
- Oct 25, 2023
-
-
Pierre-Yves David authored
This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
-
- Oct 23, 2023
-
-
Pierre-Yves David authored
This is another large IO block that we need to move within the inner object if we want's it to be self sufficient.
-
- Oct 24, 2023
-
-
Pierre-Yves David authored
The segmentfile and the attribute need to be synchronized, let's enforce that.
-
- Oct 18, 2023
-
-
Pierre-Yves David authored
revlog with a docket do not use inline revlog and do not need to split them. So we can remove some code handling docket there.
-
- Oct 24, 2023
-
-
Pierre-Yves David authored
See inline documentation for details.
-
- Oct 17, 2023
-
-
Pierre-Yves David authored
The goal of this object is to isolate a sub-API that can be implemented by a compiled object (e.g. Rust). So the boundary of this object will be arbitrary depending of what can we easily implemented in the Compiled code. For now, we start simple, and move the code that manage the IO objects in the inner object. More will come in the coming changesets. Note: the object definition could live in the different module to thin the `revlog.py` file, however there are other better candidate for extraction first and I have enought patch stacked on top of the this one for the split in this patch not to be worth it. So I leave this to future me.
-
Pierre-Yves David authored
Apparently, some time ago, the chunk cache moved in the randomaccessfile object.
-