Raphaël Gomès <rgomes@octobus.net> [Mon, 05 Jun 2023 17:29:52 +0200] rev 50659
dirstate: add test showing dirstate version mismatch causes an error
We should fall back to trying dirstate v1 when v2 fails to read.
Raphaël Gomès <rgomes@octobus.net> [Mon, 05 Jun 2023 16:30:25 +0200] rev 50658
rust-dirstate: rename `has_dirstate_v2` to `use_dirstate_v2`
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 <pierre-yves.david@octobus.net> [Mon, 05 Jun 2023 03:11:26 +0200] rev 50657
delta-find: fix pulled-delta-reuse-policy=forced behavior
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.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 03:49:44 +0200] rev 50656
delta-find: display more information about the search in some case
This will be useful to access the effect of the delta reuse policy.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 03:05:10 +0200] rev 50655
deltafind: issue debug information when we fast-path rivial case too
More debug options never hurts.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 03:11:51 +0200] rev 50654
delta-find: gather the condition to blindly use a full snapshot together
We are about to make the `if` body bigger, so having only one of them is simpler/
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 02:49:10 +0200] rev 50653
delta-find: initialize the debug information much sooner (when possible)
This help us to record debug information in alternative path.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 02:42:28 +0200] rev 50652
delta-find: fix `parents` round detection
We should compare integer with integer, instead of bytes (node).
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 02:35:03 +0200] rev 50651
delta-find: intrduce a `_one_dbg_data` method
This helps with the initialisation of the expected debug information.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 01:52:35 +0200] rev 50650
delta-find: move final debug processing in a `_dbg_process_data` method
This will help us making sure we can call the necessary debugging code in
alternative codepath.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 01:19:01 +0200] rev 50649
delta-fine: use the `_debug_search` attribute directly
By adjusting the value at creation time, we can avoid the need to use and
intermediate variable.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 01:11:47 +0200] rev 50648
delta-find: move the `gather_debug` logic in a property
This will make it simpler to get be reused in multiple places.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 08 Jun 2023 01:07:00 +0200] rev 50647
tests: check `pulled-delta-reuse-policy=forced` without general delta
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.
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 31 May 2023 18:08:56 +0100] rev 50646
tree-manifest: allow `debugupgraderepo` to run on tree manifest repo
There does not seems to be anything wrong with running the current logic on
them. So we remove the limitation.
Mathias De Mare <mathias.de_mare@nokia.com> [Tue, 25 Apr 2023 15:28:40 +0200] rev 50645
bundles: clarify streaming v2 bundle usage
This seems useful to clarify through the documentation
(we were still using debugcreatestreamclonebundle, even though
'hg bundle' is already an option...).
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 31 May 2023 16:04:16 +0100] rev 50644
stream-clone: update debugcreatestreamclonebundle helps
People to stop using streamv1, so we should point them to alternative in the
place where people might find it.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 25 May 2023 00:23:05 +0200] rev 50643
rewrite: simplify the `retained_extras` extra logic
First, we move the definition of value outside of the rebase extensions, as this
apply to all rebase-like operation and some live in other place (like evolve).
Second we make it a simple set, so that it is easy for an extension to add a new
value in it.
Third, we move the associated logic in core too. That make it easily available
to other extensions.
Fourth we simplify it usage, as the verbose version of the filtering is just a
handful on line long, we are just going to test all the value for updates, so
the Projection overlay is not bringing much here.
Note that, we make it a module level set, is a key is worth preserving it is
probably worth preserving in all cases. This was already the behavior prior to
this change.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 05 Jun 2023 11:07:08 +0200] rev 50642
revlog: fix a bug in revlog splitting
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.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 18:41:58 +0200] rev 50641
stream-clone: smoothly detect and handle a case were a revlog is split
This detect and handle the most common case for a race condition around stream
and revlog splitting. The one were the revlog is split between the initial
collection of data and the time were we start considering stream that data.
In such case, we repatch an inlined version of that revlog together when this
happens. This is necessary as stream-v2 promised a specific number of bytes and
a specific number of files to the client. In stream-v3, we will have the
opportunity to just send a split revlog instead.
Getting a better version of the protocol for stream-v3 is still useful, but it
is no longer a blocket to fix that race condition.
Note that another, rarer race condition exist, were the revlog is split while
we creating the revlog and extracing content from it. This can be dealt with
later.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 14:07:58 +0200] rev 50640
stream-clone: implement decidated `get_streams` method for revlog
For revlog, we can do better using the maximum linkrev expected. This approach
open the way to dealing with a much larger set of non-trivial changes, like
splitting of inline revlogs.
We will actually tackle this issue in the next changesets (thanks to this one).
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2023 05:52:58 +0200] rev 50639
stream-clone: make it the responsability of the store entry to stream content
The store entry has more context, this will especially be true when it comes to
revlogs. So we move the details of how to retrieve binary content to the
StoreEntry. The stream clone code now focus on the protocol bits.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 11:42:16 +0200] rev 50638
store: declare a `files` method on BaseStoreEntry
This will help pytype to type check. We have to move `StoreFile` earlier in the
file to use it in the type declaration.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2023 05:23:46 +0200] rev 50637
revlog: add a `get_revlog` method
This might seen weird, but I actually thing we have been needing this for a
long time. There is multiple object that kind of pretend being revlogs while
actually wrapping the actual revlog. Since multiple code needs to access the
actuel revlog. See documentation for more details.
Expect cleanup of various places one the current series is done.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 04:26:39 +0200] rev 50636
stream-clone: drop the _emit_v2 function
It has no user left.