Thu, 02 Feb 2023 17:23:20 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:23:20 +0100] rev 50566
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.
Thu, 02 Feb 2023 17:23:12 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:23:12 +0100] rev 50565
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.
Thu, 02 Feb 2023 17:23:03 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:23:03 +0100] rev 50564
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.
Thu, 02 Feb 2023 17:22:55 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:22:55 +0100] rev 50563
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.
Thu, 02 Feb 2023 17:21:45 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:21:45 +0100] rev 50562
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.
Thu, 02 Feb 2023 17:21:36 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:21:36 +0100] rev 50561
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.
Thu, 02 Feb 2023 17:21:22 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:21:22 +0100] rev 50560
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.
Thu, 02 Feb 2023 17:21:14 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:21:14 +0100] rev 50559
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.
Thu, 02 Feb 2023 17:21:04 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:21:04 +0100] rev 50558
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.
Thu, 02 Feb 2023 17:20:54 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:20:54 +0100] rev 50557
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.
Thu, 02 Feb 2023 17:20:46 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:20:46 +0100] rev 50556
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.
Thu, 02 Feb 2023 17:19:55 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:19:55 +0100] rev 50555
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.
Thu, 02 Feb 2023 17:19:46 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:19:46 +0100] rev 50554
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.
Thu, 02 Feb 2023 17:19:35 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:19:35 +0100] rev 50553
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.
Thu, 02 Feb 2023 17:19:26 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:19:26 +0100] rev 50552
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.
Thu, 02 Feb 2023 17:18:37 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:18:37 +0100] rev 50551
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.
Thu, 02 Feb 2023 17:18:24 +0100 safehasattr: pass attribute name as string instead of bytes
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 02 Feb 2023 17:18:24 +0100] rev 50550
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.
Wed, 31 May 2023 12:02:56 -0300 debug: `isinstance(a, x) or isinstance(a, y)` is `isinstance(a, (x, y))`
Anton Shestakov <av6@dwimlabs.net> [Wed, 31 May 2023 12:02:56 -0300] rev 50549
debug: `isinstance(a, x) or isinstance(a, y)` is `isinstance(a, (x, y))`
Wed, 31 May 2023 12:01:25 -0300 debug: update usage strings of debugignore and debugnodemap
Anton Shestakov <av6@dwimlabs.net> [Wed, 31 May 2023 12:01:25 -0300] rev 50548
debug: update usage strings of debugignore and debugnodemap Multiple files can be specified for debugignore. debugnodemap does not take a revision argument.
Wed, 31 May 2023 12:00:21 -0300 debug: slightly improve wording on the InputErrors from the previous patch
Anton Shestakov <av6@dwimlabs.net> [Wed, 31 May 2023 12:00:21 -0300] rev 50547
debug: slightly improve wording on the InputErrors from the previous patch
Wed, 31 May 2023 11:30:33 -0300 debug: use InputError instead of CommandError for validating arguments
Anton Shestakov <av6@dwimlabs.net> [Wed, 31 May 2023 11:30:33 -0300] rev 50546
debug: use InputError instead of CommandError for validating arguments
Fri, 26 May 2023 17:41:25 +0200 clonebundle: add a `filter_bundle_url` function
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2023 17:41:25 +0200] rev 50545
clonebundle: add a `filter_bundle_url` function This function does nothing by default, but give extension the opportunity to alter the URL, typically, this could be used to inject authentication token when serving clone bundle for private repositories.
Fri, 26 May 2023 16:55:52 +0200 clonebundles: move the manifest reading in a dedicated function
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 26 May 2023 16:55:52 +0200] rev 50544
clonebundles: move the manifest reading in a dedicated function We are about to make the logic more advanced to help hosting solution, so we need to centralize it first.
Wed, 31 May 2023 22:36:50 +0200 doc: format argument for date uses strftime format string (issue6818) stable
Joerg Sonnenberger <joerg@bec.de> [Wed, 31 May 2023 22:36:50 +0200] rev 50543
doc: format argument for date uses strftime format string (issue6818)
Thu, 20 Apr 2023 11:23:45 +0200 clonebundles: filter out invalid schemes instead of failing on them stable
Mathias De Mare <mathias.de_mare@nokia.com> [Thu, 20 Apr 2023 11:23:45 +0200] rev 50542
clonebundles: filter out invalid schemes instead of failing on them 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.
Thu, 20 Apr 2023 10:48:12 +0200 clonebundles: demonstrate bad behaviour when unknown scheme is present stable
Mathias De Mare <mathias.de_mare@nokia.com> [Thu, 20 Apr 2023 10:48:12 +0200] rev 50541
clonebundles: demonstrate bad behaviour when unknown scheme is present
Mon, 29 May 2023 17:04:14 +0100 rhg: support `rhg files` with `ui.relative-paths=false`
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 29 May 2023 17:04:14 +0100] rev 50540
rhg: support `rhg files` with `ui.relative-paths=false`
Mon, 29 May 2023 16:53:18 +0100 rhg: make `rhg files` work if `ui.relative-files=true` is specified
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 29 May 2023 16:53:18 +0100] rev 50539
rhg: make `rhg files` work if `ui.relative-files=true` is specified
Mon, 29 May 2023 16:47:39 +0100 rhg: test `rhg files --config ui.relative-paths ...`
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 29 May 2023 16:47:39 +0100] rev 50538
rhg: test `rhg files --config ui.relative-paths ...` Add some tests. All of these are falling back for now, will be fixed in follow-up commits.
Thu, 01 Jun 2023 12:05:32 +0100 cleanup: simplify code
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 01 Jun 2023 12:05:32 +0100] rev 50537
cleanup: simplify code
Wed, 31 May 2023 19:00:11 +0100 dirstate: better error messages when dirstate is corrupted
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 31 May 2023 19:00:11 +0100] rev 50536
dirstate: better error messages when dirstate is corrupted The current error message "Overflow in dirstate" sounds confusing because it suggests either a certain size limit that's being exceeded, or integer arithmetic overflowing. The reality is just a file being shorter than expected.
Wed, 31 May 2023 18:18:52 +0100 rust: remove an unused error variant DirstateMapError::EmptyPath
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 31 May 2023 18:18:52 +0100] rev 50535
rust: remove an unused error variant DirstateMapError::EmptyPath
Thu, 20 Apr 2023 16:07:47 -0400 hg: move unreachable code to where it could be reached
Jason R. Coombs <jaraco@jaraco.com> [Thu, 20 Apr 2023 16:07:47 -0400] rev 50534
hg: move unreachable code to where it could be reached
Tue, 23 May 2023 01:39:47 +0200 stream-clone: support streamv3 on the cli [hg bundle]
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 23 May 2023 01:39:47 +0200] rev 50533
stream-clone: support streamv3 on the cli [hg bundle] We add support and test for this. The support is still experimental, so the various name and identifier will eventually need to be renamed when stream-v3 gets out of experimental.
Tue, 23 May 2023 01:28:56 +0200 stream-clone: add the `-exp` prefix to the bundle part
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 23 May 2023 01:28:56 +0200] rev 50532
stream-clone: add the `-exp` prefix to the bundle part We forget to do so in 58adcabc295f, however this is important to prevent "current" client to send incompatible version to future client.
Mon, 21 Feb 2022 14:44:22 +0100 zstd: hack include order to ensure that our zstd.h is found
Joerg Sonnenberger <joerg@bec.de> [Mon, 21 Feb 2022 14:44:22 +0100] rev 50531
zstd: hack include order to ensure that our zstd.h is found If the regular Python CFLAGS include directories that already have the zstd headers available, a different and possible incompatible version can be picked up otherwise. Sadly, it seems like Python has no easy way to prefix flags before the rest.
Thu, 18 May 2023 17:07:43 -0700 exchange: allow passing no includes/excludes to `pull()`
Martin von Zweigbergk <martinvonz@google.com> [Thu, 18 May 2023 17:07:43 -0700] rev 50530
exchange: allow passing no includes/excludes to `pull()` I would expect that `exchange.pull(includepats=[])` results in an empty list of include patterns to be passed to the remote, but it doesn't currently because we check for any truthy value instead of checking specifically for `not None`.
Tue, 16 May 2023 12:31:07 +0200 stabletailgraph: add test cases challenging the open merge stack
pacien <pacien.trangirard@pacien.net> [Tue, 16 May 2023 12:31:07 +0200] rev 50529
stabletailgraph: add test cases challenging the open merge stack This adds three more complex test cases with situations requiring tricky state update in the stack-based iteration (arriving soon).
Fri, 21 Apr 2023 14:33:33 +0200 stabletailgraph: naive version of leap computation
pacien <pacien.trangirard@pacien.net> [Fri, 21 Apr 2023 14:33:33 +0200] rev 50528
stabletailgraph: naive version of leap computation This adds a naive reference implementation of the computation of leap and specific leap sets (described in the code documentation). The existing tests are enriched accordingly.
Fri, 21 Apr 2023 16:19:32 +0200 stabletailgraph: extract _parents util func
pacien <pacien.trangirard@pacien.net> [Fri, 21 Apr 2023 16:19:32 +0200] rev 50527
stabletailgraph: extract _parents util func
Mon, 22 May 2023 19:04:05 +0200 stabletailgraph: clarify excl part size computation
pacien <pacien.trangirard@pacien.net> [Mon, 22 May 2023 19:04:05 +0200] rev 50526
stabletailgraph: clarify excl part size computation
Fri, 21 Apr 2023 14:32:58 +0200 stabletailgraph: clarify naiveness of current implementation
pacien <pacien.trangirard@pacien.net> [Fri, 21 Apr 2023 14:32:58 +0200] rev 50525
stabletailgraph: clarify naiveness of current implementation Both the naive and the actual versions of the algorithms are going to co-exist for the tests. This makes is clearer that this one is naive.
Fri, 19 May 2023 14:49:50 +0200 stream-clone: introduce the notion of an experimental "v3" version
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 19 May 2023 14:49:50 +0200] rev 50524
stream-clone: introduce the notion of an experimental "v3" version We introduce a new experimental "v3" stream protocol, disabled by default. In practice the "v3-exp" protocol introduced in this changeset is identical to v2, but this changeset, lay the groundwork for having a new protocol: configuration, capability exchange, test coverage, etc. The actual protocol work will starts in the coming changesets.
Sat, 20 May 2023 01:39:13 +0200 stream-clone: check is a compatible protocol can be found
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:39:13 +0200] rev 50523
stream-clone: check is a compatible protocol can be found The previous code was explicitly checking if "v2" is listed in the "stream" bundle2 capability. The new code is checking is there is anything common between the versions supported client side and server side overlaps. This prepare the introduction of more stream version than "v2".
Sat, 20 May 2023 01:22:49 +0200 stream-clone: bail-out earlier if stream clone is not requested
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:22:49 +0200] rev 50522
stream-clone: bail-out earlier if stream clone is not requested The `canperformstreamclone` function is bit messy. However it seems clearer to me to check if a stream-clone have been requested by the client or the server at all, before checking if a compatible protocol can be negotiated with the server. So I am doing some gratuitous movement so reorder conditional.
Sat, 20 May 2023 01:19:26 +0200 stream-clone: bail-out earlier if pull is partial
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 20 May 2023 01:19:26 +0200] rev 50521
stream-clone: bail-out earlier if pull is partial 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.
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.
Mon, 15 May 2023 09:01:02 +0200 store: use StoreEntry API instead of parsing filename in largefile
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:01:02 +0200] rev 50488
store: use StoreEntry API instead of parsing filename in largefile This is more explicit and more robust.
Mon, 15 May 2023 09:00:46 +0200 store: use StoreEntry API instead of parsing filename when listing manifestlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:00:46 +0200] rev 50487
store: use StoreEntry API instead of parsing filename when listing manifestlog This is more explicit and more robust.
Mon, 15 May 2023 09:00:28 +0200 store: use StoreEntry API instead of parsing filename when fixing issue6528
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:00:28 +0200] rev 50486
store: use StoreEntry API instead of parsing filename when fixing issue6528 This is more explicit and more robust. We also introduce a small output change as it make things simpler and this is a affecting a debug-command.
Mon, 15 May 2023 09:00:13 +0200 store: use StoreEntry API instead of parsing filename in remotefilelog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 09:00:13 +0200] rev 50485
store: use StoreEntry API instead of parsing filename in remotefilelog This is more explicit and more robust.
Mon, 15 May 2023 08:59:56 +0200 store: use StoreEntry API instead of parsing filename in narrow
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:56 +0200] rev 50484
store: use StoreEntry API instead of parsing filename in narrow This is more explicit and more robust.
Mon, 15 May 2023 08:59:38 +0200 store: add a `target_id` attribute on RevlogStoreEntry
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:38 +0200] rev 50483
store: add a `target_id` attribute on RevlogStoreEntry This hold the "target" (file, directory, etc) of a revlog. Having this available will help a lot of code to avoid direct file path access.
Mon, 15 May 2023 08:59:22 +0200 store: actually tag tree manifest revlogs as manifest revlogs
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:22 +0200] rev 50482
store: actually tag tree manifest revlogs as manifest revlogs It turn out we have been mislabeling these for a long while. This is now fixed.
Mon, 15 May 2023 08:59:06 +0200 store: also gather files per revlog in `topfiles`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:59:06 +0200] rev 50481
store: also gather files per revlog in `topfiles` This conclude out revlog gathering.
Mon, 15 May 2023 08:58:49 +0200 store: also group files by revlog in fncache version of datafiles
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:49 +0200] rev 50480
store: also group files by revlog in fncache version of datafiles One more step.
Mon, 15 May 2023 08:58:33 +0200 store: add logic to group revlog file together
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:33 +0200] rev 50479
store: add logic to group revlog file together For now each file get its own entry, this will help stopping this, soon™. We use such gathering in the `basicstore` code.
Mon, 15 May 2023 08:58:16 +0200 store: change `_walk` return to `(filename, (type, size))`
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:16 +0200] rev 50478
store: change `_walk` return to `(filename, (type, size))` If we are to group file per revlog, having the filename as the "main key" will be useful. This change will make the following changes clearer.
Mon, 15 May 2023 08:58:01 +0200 store: lazily get file size on demand for the fncache case
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:58:01 +0200] rev 50477
store: lazily get file size on demand for the fncache case We don't have the information in the first place, so we can avoid querying the file system inconditionnaly for use case we don't needs it. This change requires the StoreFile class to be passed a vfs to retrieve the file_size if needed. In the non-fncache case, we already have the information from file system walking, so we keep it and use it.
Mon, 15 May 2023 08:57:45 +0200 store: only access is_volatile information through the file object
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:57:45 +0200] rev 50476
store: only access is_volatile information through the file object This make sure other code only access this information through the proper API, and it prepare for store entries to be able to agregate multiple files.
Mon, 15 May 2023 08:57:30 +0200 store: only access file_size information through the file object
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:57:30 +0200] rev 50475
store: only access file_size information through the file object This make sure other code only access this information through the proper API, and it prepare for store entries to be able to agregate multiple files.
Mon, 15 May 2023 08:57:14 +0200 store: have custom init for entries class
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:57:14 +0200] rev 50474
store: have custom init for entries class This will get useful to add special processing later in this series.
Mon, 15 May 2023 08:56:56 +0200 store: use specialized class for store entries
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:56:56 +0200] rev 50473
store: use specialized class for store entries We introduce two different classes for revlog and other entries. For now, we still have multiple entry for the same revlog, but we will work toward grouping the different file in a single entry in this series. Having the distinction is a step toward this goal.
Mon, 15 May 2023 08:56:40 +0200 store: introduce a EntryFile object to actually access file info
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:56:40 +0200] rev 50472
store: introduce a EntryFile object to actually access file info For now a StoreEntry match a single file, but the goal is to eventually combine multiple file in a higher level Entry, so we need to introduce this distinction and use it first.
Mon, 15 May 2023 08:56:23 +0200 store: use a StoreEntry object instead of tuple for store files
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 15 May 2023 08:56:23 +0200] rev 50471
store: use a StoreEntry object instead of tuple for store files We want to make the store return more semantic information instead of a stream of file path. To achieve this, we start with adding a simple object that hold the same information as the tuple it replace, and do a simple update to the user code to fetch and use the same information. From there, we will be able to iteratively upgrade the codebase toward better objects.
(0) -30000 -10000 -3000 -1000 -300 -100 -96 +96 +100 +300 +1000 tip