- Jun 08, 2023
-
-
Raphaël Gomès authored
-
Pierre-Yves David authored
Since 6.4, we create a temporary index file to write the split data without overwriting the inline version too early. However, the store encoding does not prevent these new `.i.s` file to collide with a directory with the same name. While the odds for such a collision to happens are fairly low, the collision would prevent Mercurial from working. The store encoding have a mitigation solution in place to prevent such collisions from happening for `.i` and `.d` files, but not for other extensions. We cannot update this encoding scheme to solve the issue since it would diverge from older version of Mercurial. Instead, we create an alternative directory tree dedicated to such files. The use of the `.i` extension combined with store encoding will prevent collisions there.
-
Pierre-Yves David authored
This is about to become more complex, so we gather the logic in a single place.
-
- Jun 05, 2023
-
-
Raphaël Gomès authored
This will help us not fail when a v1 dirstate is present on disk while a v2 was expected (which could happen with a racy/interrupted upgrade).
-
Raphaël Gomès authored
We should fall back to trying dirstate v1 when v2 fails to read.
-
Raphaël Gomès authored
It is closer to the right semantics. I added a docstring to better explain the reasonning. In the next patch(es), I will address the underlying issue of finding the "wrong" version of the dirstate on disk.
-
Pierre-Yves David authored
The code that select delta still has too many oportunity to discard the delta is has been forcibly asked to reuse. However is is fairly easy to use a dedicated fastpath for this case. So we do so. Cleaning other code that tries to enforce that policy will be done on default.
-
- Jun 08, 2023
-
-
Pierre-Yves David authored
This will be useful to access the effect of the delta reuse policy.
-
Pierre-Yves David authored
More debug options never hurts.
-
Pierre-Yves David authored
We are about to make the `if` body bigger, so having only one of them is simpler/
-
Pierre-Yves David authored
This help us to record debug information in alternative path.
-
Pierre-Yves David authored
We should compare integer with integer, instead of bytes (node).
-
Pierre-Yves David authored
This helps with the initialisation of the expected debug information.
-
- Jun 07, 2023
-
-
Pierre-Yves David authored
This will help us making sure we can call the necessary debugging code in alternative codepath.
-
Pierre-Yves David authored
By adjusting the value at creation time, we can avoid the need to use and intermediate variable.
-
Pierre-Yves David authored
This will make it simpler to get be reused in multiple places.
-
Pierre-Yves David authored
If general delta is not available, the amount of delta we can reuse at all will be more limited. We check that application still work and does not corrupt the repository.
-
- Apr 25, 2023
-
-
Mathias De Mare authored
This seems useful to clarify through the documentation (we were still using debugcreatestreamclonebundle, even though 'hg bundle' is already an option...).
-
- Jun 05, 2023
-
-
Arseniy Alekseyev authored
Specifically, if the .i.s files are not added to the transaction, then a follow-up modification of such a file records it into transaction as non-empty, which is incorrect.
-
- Jun 01, 2023
-
-
Pierre-Yves David authored
Some code path are far too fast now. We raise de number to make sure the run keep to that floor.
-
- May 31, 2023
-
-
Jörg Sonnenberger authored
-
- Apr 20, 2023
-
-
Mathias De Mare authored
Previously, an invalid clonebundle scheme would result in a failed clone. By specifying a list of schemes we support, we can make sure adding a new scheme (like the one for inline clonebundles) does not result in clones failing for older clients.
-
Mathias De Mare authored
-
- May 04, 2023
-
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
- May 02, 2023
-
-
Pierre-Yves David authored
Because of store encoding, we might end up with the backup in a different directory than the initial copy (for example if the backup path make it cross the 120 char limit). This can create crash, especially since 6.4 where backup are used during revlog split. Making sure the directory exists fixes these crash We added a test covering this case. Strictly speaking, this has always been broken, however the new code in 6.4 triggers it more easily.
-
Pierre-Yves David authored
It is an important part of the API when creating directory. We will need it in the next changeset.
-
Pierre-Yves David authored
There have been a report of failure while splitting revlog. The file name involved was important. The pattern involved here are not problematic, but it help to setup the machinery to test multiple files, the actual fix and problematic file will arrive in a later changeset.
-
Raphaël Gomès authored
This will prevent a small race condition where another hg process still believes the repo is dirstate-v1 during the upgrade process. This is good to have, but it is not a proper fix for the underlying problem. There is code that assumes a requirement means a usage, e.g. having the `generaldelta` requirement would imply *all* revlogs to use general delta, but it's not true, it simply means that the repository advertises to the client it needs to understand `generaldelta` in order to read the repo. In the case of the dirstate, having the requirement *technically* should always be the same as using dirstate-v2, since there is only one dirstate and requirements should be as minimal as possible. However, we should not assume this and make the code more robust in a future patch (series).
-
- Apr 26, 2023
-
-
Arun Kulshreshtha authored
-
Arun Kulshreshtha authored
-
Arun Kulshreshtha authored
-
- Apr 25, 2023
-
-
Matt Harbison authored
The problem is that `hg help fix` didn't mention *how* to configure the tools, and while I knew that `{rootpath}` existed in the configuration, I missed that the tools require reading content from stdin. (I configured `gofmt` to use `{rootpath}`, and that had the effect of squashing all changes in a file at `.` into the first commit and emptying that content from its descendants.) Basically all this does is put a pointer in the default (command level) help to the extension level help that mentions the configuration, and moves the extension level help that documents reading from stdin and writing to stdout to the top to give it more prominence. The last sentence is adjusted a bit to reflect the new location.
-
- Apr 18, 2023
-
-
Pierre-Yves David authored
So the next person won't have to grep the code to know what it is doing.
-
- Apr 19, 2023
-
-
Pierre-Yves David authored
Finish early in on-general delta case mean a lot of code can assume that general delta is not enabled.
-
- Apr 18, 2023
-
-
Pierre-Yves David authored
This make it easier to catch request to build delta that does not make sense in the general delta world. It seems better to raise a programming error than to corrupt the repository.
-
- Apr 19, 2023
-
-
Pierre-Yves David authored
Without general delta, the only option is to do a delta against the previous revision in the revlog, or to do a full snapshot. So no need to dive into the more complicated logic. This prevent Mercurial to misbehave when applying remote deltas when `pulled-delta-reuse-policy` was set to "try-base" or "forced" and would produce and store invalid deltas. We add an associated tests to make sure this scenario is covered by tests. There are more code to cleanup after this, but I what to keep the fixing patch simple.
-
Pierre-Yves David authored
This will be useful in the next patch, but I am putting it in its own commit to make sure we can easily bisect any subtle side effect. (none are expected, but still)
-