Sat, 20 May 2023 01:17:27 +0200 stream-clone: bail-out earlier if destination repo is not empty
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:17:27 +0200] rev 50520
stream-clone: bail-out earlier if destination repo is not empty The `canperformstreamclone` function is bit messy. However it seems clearer to me to process the very generic condition about "can we consider a stream-clone at all", before checking if a stream-clone is requested and if a compatible protocol can be negotiated with the server. So I am doing some gratuitous movement so reorder conditional.
Sun, 21 May 2023 00:00:57 +0200 stream-clone: check the version of streaming clone supported by the client
Arseniy Alekseyev <aalekseyev@janestreet.com> [Sun, 21 May 2023 00:00:57 +0200] rev 50519
stream-clone: check the version of streaming clone supported by the client Make the server refuse to produce streaming clone bundle, if the client doesn't specify the stream=v2 capability. This is in preparation to introduce stream=v3. As far as I can tell, this capability was added at the same time as support for bundle2-based streaming pulls was added, so I don't expect clients to break. (the modern client doesn't break, at any rate)
Sun, 21 May 2023 01:03:19 +0200 stream-clone: make sure the `stream` capability is set when bundling
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 01:03:19 +0200] rev 50518
stream-clone: make sure the `stream` capability is set when bundling This is important to start narrowing protocol option in the next changesets.
Sun, 21 May 2023 00:00:29 +0200 stream-clone: upgrade the error message for bad stream request
Arseniy Alekseyev <aalekseyev@janestreet.com> [Sun, 21 May 2023 00:00:29 +0200] rev 50517
stream-clone: upgrade the error message for bad stream request The new version if more compact and more consistent with the general Mercurial usage.
Sun, 21 May 2023 03:21:00 +0200 stream-clone: yield cache entry in `_entries_walk` too
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 03:21:00 +0200] rev 50516
stream-clone: yield cache entry in `_entries_walk` too The new function now cover the same ground as _v2_walk.
Sun, 21 May 2023 03:10:59 +0200 stream-clone: introduce a _entries_walk
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 03:10:59 +0200] rev 50515
stream-clone: introduce a _entries_walk That function insert itself between the store and `_v2_walk`. It only deals with StoreEntry unlike `_v2_walk` that deal with actual file. A share of the `_v2_walk` logic will be moved in this new `_entry_walk` function. Having this function will help us to implement a new "v3" version of the protocol that will be more entry centric.
Sun, 21 May 2023 02:29:33 +0200 store: make `walk` return an entry for obsolescence if requested so
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 02:29:33 +0200] rev 50514
store: make `walk` return an entry for obsolescence if requested so Instead of having dedicated code in the streamclone code, we should have the store deal with advertising the data it contains.
Sun, 21 May 2023 02:16:24 +0200 store: yield phases before changelog
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 02:16:24 +0200] rev 50513
store: yield phases before changelog Creating the `changelog.i` file make the repository usable, so dealing with phase earlier seems better.
Sun, 21 May 2023 02:15:04 +0200 store: make `walk` return an entry for phase if requested so
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 21 May 2023 02:15:04 +0200] rev 50512
store: make `walk` return an entry for phase if requested so Instead of having dedicated code in the streamclone code, we should have the store deal with advertising the data it contains.
Mon, 22 May 2023 10:20:24 +0100 cli: add a test of `hg debugnodemap --manifest`
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 22 May 2023 10:20:24 +0100] rev 50511
cli: add a test of `hg debugnodemap --manifest` this is a new option that's not tested yet
Thu, 18 May 2023 19:37:12 +0100 cli: fix spelling in `debugnodemap` error messages
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 19:37:12 +0100] rev 50510
cli: fix spelling in `debugnodemap` error messages
Thu, 18 May 2023 18:45:54 +0100 cli: make debugnodemap capable of inspecting an arbitrary nodemap
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 18:45:54 +0100] rev 50509
cli: make debugnodemap capable of inspecting an arbitrary nodemap This lets us inspect the manifest nodemap and individual directory nodemaps when treemanifest is used.
Thu, 18 May 2023 17:53:17 +0100 rust: mostly avoid streaming zstd decompression
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 17:53:17 +0100] rev 50508
rust: mostly avoid streaming zstd decompression Streaming ZStd decompression seems slightly slower, and the API we use makes it very inconvenient to re-use the decompression context. Instead of using that, use the buffer-backed version, because we can give a reasonable-ish size estimate.
Thu, 18 May 2023 17:25:18 +0100 rust: in zstd decompression, avoid a useless vec initialization
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 17:25:18 +0100] rev 50507
rust: in zstd decompression, avoid a useless vec initialization
Thu, 18 May 2023 17:18:54 +0100 rust: speed up zstd decompression by re-using the decompression context
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 18 May 2023 17:18:54 +0100] rev 50506
rust: speed up zstd decompression by re-using the decompression context Admittedly, zstd is already pretty fast, but this change makes it a bit faster yet: it saves ~5% of time it takes to read our large repo. The actual motivating use case is treemanifest: in treemanifest we end up reading *lots* of small directories, and many of them need decompression, and there the saving for [rhg files] is >10%. (which also seems unreasonable, we should probably keep things uncompressed more)
Tue, 16 May 2023 10:44:25 +0200 store: rename `topfiles` to `top_entries`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 May 2023 10:44:25 +0200] rev 50505
store: rename `topfiles` to `top_entries` The method is now returning StoreEntries let us rename the method for clarity.
Tue, 16 May 2023 10:43:36 +0200 store: rename `datafiles` to `data_entries`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 16 May 2023 10:43:36 +0200] rev 50504
store: rename `datafiles` to `data_entries` The method is now returning StoreEntries let us rename the method for clarity.
Mon, 15 May 2023 22:03:39 +0200 store: use boolean property for upgrade's matchrevlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:03:39 +0200] rev 50503
store: use boolean property for upgrade's matchrevlog
Mon, 15 May 2023 22:11:27 +0200 store: use the new boolean property in `upgrade`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:11:27 +0200] rev 50502
store: use the new boolean property in `upgrade`
Mon, 15 May 2023 22:11:02 +0200 store: use the new boolean property in `remotefilelogserver`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:11:02 +0200] rev 50501
store: use the new boolean property in `remotefilelogserver`
Mon, 15 May 2023 22:10:33 +0200 store: use the boolean property in `repair_issue6528`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:10:33 +0200] rev 50500
store: use the boolean property in `repair_issue6528`
Mon, 15 May 2023 22:10:04 +0200 store: use the new boolean property in `narrow`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:10:04 +0200] rev 50499
store: use the new boolean property in `narrow`
Mon, 15 May 2023 22:09:43 +0200 store: use the boolean property in `store`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:09:43 +0200] rev 50498
store: use the boolean property in `store`
Mon, 15 May 2023 22:09:15 +0200 store: introduce boolean property for revlog type
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 22:09:15 +0200] rev 50497
store: introduce boolean property for revlog type This will avoid exposing implementation details to more generic code.
Mon, 15 May 2023 09:03:15 +0200 store: issue a single entry for each revlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:03:15 +0200] rev 50496
store: issue a single entry for each revlog We now yield a single entry, with data about each files involved. This help to simplify multiple code using this and it will help to further simplify and fixes the streaming code.
Mon, 15 May 2023 09:02:59 +0200 store: rename `unencoded_path` to `entry_path` for StoreEntry
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:59 +0200] rev 50495
store: rename `unencoded_path` to `entry_path` for StoreEntry This remove the ambiguity with StoreFile and make sure use code will be using the right API.
Mon, 15 May 2023 09:02:43 +0200 store: do the revlog matching on entry directly
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:43 +0200] rev 50494
store: do the revlog matching on entry directly This is the last blocker to safely merge the revlog files in a single entry.
Mon, 15 May 2023 09:02:26 +0200 store: split the wrapping of encodedstore between _wrap and datafiles
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:26 +0200] rev 50493
store: split the wrapping of encodedstore between _wrap and datafiles The `datafiles` method of `basicstore` is doing a lot of work that should be done on decoded filename. So we now wrap `_walk` to do the decoding, and less work in `datafiles`. This is necessary to make sure file from the same revlog can be grouped together.
Mon, 15 May 2023 09:02:09 +0200 store: introduce a main_file_path method for revlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:02:09 +0200] rev 50492
store: introduce a main_file_path method for revlog This help code that need to point revlog to an index file. This is put to use in the upgrade code.
Mon, 15 May 2023 09:01:53 +0200 upgrade: actually use StoreEntry API to create revlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:53 +0200] rev 50491
upgrade: actually use StoreEntry API to create revlog Lets make use of the semanctic of the object we are passed.
Mon, 15 May 2023 09:01:36 +0200 upgrade: use StoreEntry object in upgrade
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:36 +0200] rev 50490
upgrade: use StoreEntry object in upgrade We will make more use of the API in the next changeset, but just moving to use entry is a significant change for the engine codebase.
Mon, 15 May 2023 09:01:18 +0200 upgrade: drop a quick fix that is not longer necessary
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:18 +0200] rev 50489
upgrade: drop a quick fix that is not longer necessary We won't issue bad revlog from topfile anymore.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -32 +32 +50 +100 +300 +1000 tip