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.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 04:24:39 +0200] rev 50635
stream-clone: directly use `_entries_walk` to generate stream-v2
This does not requires that much changes and will give us much more
flexibility, like improving revlog handling to gracefully handle race
situation.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 04:12:30 +0200] rev 50634
stream-clone: pre-indent some code
This make the next changeset clearer.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2023 04:12:10 +0200] rev 50633
local-clone: perform the hardlink/copy based from _entries_walk returns
We previously used `_v2_walk`. However it is not bringing us much. So lets use
the higher level function instead. This will offer us more flexibility with the
`_v2_walk` function… like deleting it eventually.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 04:24:29 +0200] rev 50632
store: cache the file_size when we get it from disk
The point of caching `files` is to ensure consistency and avoiding redoing
expensive work. So we cache the file_size once retrieved.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 28 May 2023 03:46:48 +0200] rev 50631
store: cache the `files()` return for store entries
This make it more efficient to directly use the entries list to retrieve data
in various location. It also make the entry record the file size it previously
promissed to user code, especially the stream clone code.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2023 04:22:18 +0200] rev 50630
stream-clone: introduce a richer TempCopyManager object
This replace the previous `copy` callable with a richer object that allow access
to the backup path. This will simplify the user code as they won't need to keep
and pass around the backup path explicitly.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 13:29:01 +0200] rev 50629
store: properly compute the targer_id of manifestlog in no-fncache walk
Creating RevlogStoreEntry is good, but we need to drop the final `00manifest`
part to create something correct.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 13:28:33 +0200] rev 50628
store: do not drop the final `/` when creating manifestlog instance
This bug, inherited from the upgrade code leads to the acces/creation of broken
revlog with name `DIRECTORY00manifest.i` instead of `DIRECTORY/00manifest.i`
We fix it in its own changeset to preserve the "pure code movement" aspect of
the previous changesets.
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 27 May 2023 04:01:17 +0200] rev 50627
store: add a `get_revlog_instance` method on revlog entries
The upgrade code needs this a lot, and the stream code is about to needs it
too. So we start by moving the upgrade code in a more generic location.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 02:22:20 +0200] rev 50626
stream-clone: add a test that highlight crash on revlog splitting
This has been a long running problem, we should have a tests for it.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 01:38:59 +0200] rev 50625
stream-clone: remove unused code in test-clone-stream.t
We are not using the extension we create inline, we are using
`tests/testlib/ext-stream-clone-steps.py`. So let us deleted the unused version.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 01:38:34 +0200] rev 50624
stream-clone: document the ext-stream-clone-steps.py utility extension
This extension is useful, let us clarify how to use it.
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 29 May 2023 12:15:10 +0200] rev 50623
test-treemanifest: cleanup the test to more easily show server side error
This made my life easier debugging.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Jun 2023 22:32:21 +0100] rev 50622
test: make test-contrib-perf.t more robust
Some code path are far too fast now. We raise de number to make sure the run
keep to that floor.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:26:10 +0100] rev 50621
safehasattr: pass attribute name as string instead of bytes
This is a step toward replacing `util.safehasattr` usage with plain `hasattr`.
The builtin function behave poorly in Python2 but this was fixed in Python3.
These change are done one by one as they tend to have a small odd to trigger
puzzling breackage.