Thu, 26 Oct 2023 15:26:19 +0200 rust-index: add Sync bound to all relevant mmap-derived values
Raphaël Gomès <rgomes@octobus.net> [Thu, 26 Oct 2023 15:26:19 +0200] rev 51233
rust-index: add Sync bound to all relevant mmap-derived values All readonly mmaps are Sync as far as Rust is concerned. Integrity of the mmap'ed file is a concern separate to Rust's memory model, since it requires out-of-program handling via locks, etc. This will help when we start sharing the Rust Index with Python.
Tue, 31 Oct 2023 18:09:43 +0100 debugindexstats: handle the lack of Rust support better
Raphaël Gomès <rgomes@octobus.net> [Tue, 31 Oct 2023 18:09:43 +0100] rev 51232
debugindexstats: handle the lack of Rust support better We don't have any stats in the Rust index. Currently it is not known which stats would be interesting to get, so if they end up being important, we can add them later.
Tue, 31 Oct 2023 17:36:59 +0100 rust-python-index: don't panic on a corrupted index when calling from Python
Raphaël Gomès <rgomes@octobus.net> [Tue, 31 Oct 2023 17:36:59 +0100] rev 51231
rust-python-index: don't panic on a corrupted index when calling from Python This makes `test-verify.t` pass again. In an ideal world, we would find the exact commit where this test breaks and amend part of this change there, but this is a long enough series.
Tue, 31 Oct 2023 17:34:31 +0100 tests: ignore test-storage when using Rust
Raphaël Gomès <rgomes@octobus.net> [Tue, 31 Oct 2023 17:34:31 +0100] rev 51230
tests: ignore test-storage when using Rust This is only relevant for Python code and the SQLite backend, which is in a half-abandoned state.
Fri, 20 Oct 2023 09:12:22 +0200 rust-index: optimize find_gca_candidates() on less than 8 revisions
Georges Racinet <georges.racinet@octobus.net> [Fri, 20 Oct 2023 09:12:22 +0200] rev 51229
rust-index: optimize find_gca_candidates() on less than 8 revisions This is expected to be by far the most common case, given that, e.g., merging involves using it on two revisions. Using a `u8` as support for the bitset obviously divides the amount of RAM needed by 8. To state the obvious, on a repository with 10 million changesets, this spares 70MB. It is also possible that it'd be slightly faster, because it is easier to allocate and provides better cache locality. It is possible that some exhaustive listing of the traits implemented by `u8` and `u64` would avoid the added duplication, but that can be done later and would need a replacement for the `MAX` consts.
Fri, 20 Oct 2023 08:54:49 +0200 rust-index: simplification in find_gca_candidates()
Georges Racinet <georges.racinet@octobus.net> [Fri, 20 Oct 2023 08:54:49 +0200] rev 51228
rust-index: simplification in find_gca_candidates() `parent_seen` can be made a mutable ref, making this part more obvious, not needing to be commented so much. The micro-optimization of avoiding the union if `parent_seen` and `current_seen` agree is pushed down in the `union()` method of the fast, `u64` based bit set implementation (in case it matters).
Fri, 20 Oct 2023 08:43:00 +0200 rust-index: avoid double negation in find_gca_candidates()
Georges Racinet <georges.racinet@octobus.net> [Fri, 20 Oct 2023 08:43:00 +0200] rev 51227
rust-index: avoid double negation in find_gca_candidates()
Fri, 20 Oct 2023 08:17:00 +0200 rust-index: avoid some cloning in find_gca_candidates()
Georges Racinet <georges.racinet@octobus.net> [Fri, 20 Oct 2023 08:17:00 +0200] rev 51226
rust-index: avoid some cloning in find_gca_candidates() Instead of keeping the information whether the current revision is poisoned on `current_seen`, we extract it as a boolean. This also allows us to simplify the explanation of `seen[r].is_poisoned()`, as the exceptional case where it is poisoned right after `r` has been determined to be a solution does no longer exist.
Wed, 18 Oct 2023 15:35:38 +0200 rust-index: implement common_ancestors_heads() and ancestors()
Georges Racinet <georges.racinet@octobus.net> [Wed, 18 Oct 2023 15:35:38 +0200] rev 51225
rust-index: implement common_ancestors_heads() and ancestors() The only differences betwwen `common_ancestors_heads()` and `find_gca_candidates()` seems to be that: - the former accepts "overlapping" input revisions (meaning with duplicates). - limitation to 24 inputs (in the C code), that we translate to using the arbitrary size bit sets in the Rust code because we cannot bail to Python. Given that the input is expected to be small in most cases, we take the heavy handed approach of going through a HashSet and wait for perfomance assessment In case this is used via `hg-cpython`, we can anyway absorb the overhead by having `commonancestorheads` build a vector of unique values directly, and introduce a thin wrapper over `find_gca_candidates`, to take care of bit set type dispatching only. As far as `ancestors` is concerneed, this is just chaining `common_ancestors_heads()` with `find_deepest_revs`.
Tue, 17 Oct 2023 22:42:40 +0200 rust-index: find_gca_candidates bit sets genericization
Georges Racinet on incendie.racinet.fr <georges@racinet.fr> [Tue, 17 Oct 2023 22:42:40 +0200] rev 51224
rust-index: find_gca_candidates bit sets genericization This allows to use arbitratry size of inputs in `find_gca_candidates()`. We're genericizing so that the common case of up to 63 inputs can be treated with the efficient implementation backed by `u64`. Some complications with the borrow checker came, because arbitrary sized bit sets will not be `Copy`, hence mutating them keeps a mut ref on the `seen` vector. This is solved by some cloning, most of which can be avoided, preferably in a follow-up after proof that this works (hence after exposition to Python layer). As far as performance is concerned, calling `clone()` on a `Copy` object (good case when number of revs is less than 64) should end up just doing a copy, according to this excerpt of the `Clone` trait documentation: Types that are Copy should have a trivial implementation of Clone. More formally: if T: Copy, x: T, and y: &T, then let x = y.clone(); is equivalent to let x = *y;. Manual implementations should be careful to uphold this invariant; however, unsafe code must not rely on it to ensure memory safety. We kept the general structure, hence why there are some double negations. This also could be made nicer in a follow-up. The `NonStaticPoisonableBitSet` is included to ensure that the `PoisonableBitSet` trait is general enough (had to correct `vec_of_empty()` for instance). Moving the genericization one level to encompass the `seen` vector and not its elements would be better for performance, if worth it.
Thu, 02 Nov 2023 11:45:20 +0100 rust-index: core impl for find_gca_candidates and find_deepest
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Nov 2023 11:45:20 +0100] rev 51223
rust-index: core impl for find_gca_candidates and find_deepest This still follows closely the C original and not able to treat more than 63 input revisions (bitset backed by `u64` and one bit reserved for poisoning).
Mon, 30 Oct 2023 11:57:36 +0100 rust-index: add support for `reachableroots2`
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 Oct 2023 11:57:36 +0100] rev 51222
rust-index: add support for `reachableroots2` Exposition in `hg-cpython` done in regular impl block, again for rustfmt support etc.
Thu, 02 Nov 2023 12:17:06 +0100 hg-cpython: rev_pyiter_collect_or_else
Georges Racinet <georges.racinet@octobus.net> [Thu, 02 Nov 2023 12:17:06 +0100] rev 51221
hg-cpython: rev_pyiter_collect_or_else It will be useful to give callers the control on the generated errors
Mon, 30 Oct 2023 11:54:42 +0100 rust-index: add support for `computephasesmapsets`
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 Oct 2023 11:54:42 +0100] rev 51220
rust-index: add support for `computephasesmapsets` Exposition in `hg-cpython` done in the regular `impl` block to enjoy rustfmt and clearer compilartion errors.
Sat, 30 Sep 2023 15:59:03 +0200 rust-index: slicechunktodensity returns Rust result
Georges Racinet <georges.racinet@octobus.net> [Sat, 30 Sep 2023 15:59:03 +0200] rev 51219
rust-index: slicechunktodensity returns Rust result Ready for removal of the scaffolding. This time, we allow ourselves a minor optimization: we avoid allocating for each chunk. Instead, we reuse the same vector, and perform at most one allocation per chunk. The `PyList` constructor will copy the buffer anyway.
Thu, 02 Nov 2023 11:40:23 +0100 rust-index: add support for `_slicechunktodensity`
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Nov 2023 11:40:23 +0100] rev 51218
rust-index: add support for `_slicechunktodensity`
Fri, 29 Sep 2023 20:51:49 +0200 rust-index: headrevsfiltered() returning Rust result
Georges Racinet <georges.racinet@octobus.net> [Fri, 29 Sep 2023 20:51:49 +0200] rev 51217
rust-index: headrevsfiltered() returning Rust result
Mon, 30 Oct 2023 11:14:25 +0100 rust-index: add support for `headrevsfiltered`
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 Oct 2023 11:14:25 +0100] rev 51216
rust-index: add support for `headrevsfiltered` The implementation is merged with that of `headrevs` also to make sure that caches are up to date.
Tue, 19 Sep 2023 15:21:43 +0200 rust-index: implement headrevs
Raphaël Gomès <rgomes@octobus.net> [Tue, 19 Sep 2023 15:21:43 +0200] rev 51215
rust-index: implement headrevs
Sat, 30 Sep 2023 16:52:40 +0200 rust-index: variant of assert_py_eq with normalizer expression
Georges Racinet <georges.racinet@octobus.net> [Sat, 30 Sep 2023 16:52:40 +0200] rev 51214
rust-index: variant of assert_py_eq with normalizer expression The example given in doc-comment is the main use case: some methods may require ordering insensitive comparison. This is about to be used for `reachableroots2`
Thu, 03 Aug 2023 15:50:14 +0200 rust-index: add support for delta-chain computation
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Aug 2023 15:50:14 +0200] rev 51213
rust-index: add support for delta-chain computation
Thu, 03 Aug 2023 15:01:34 +0200 rust-index: add support for `find_snapshots`
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Aug 2023 15:01:34 +0200] rev 51212
rust-index: add support for `find_snapshots`
Thu, 03 Aug 2023 12:05:32 +0200 rust-index: add `is_snapshot` method
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Aug 2023 12:05:32 +0200] rev 51211
rust-index: add `is_snapshot` method
Wed, 02 Aug 2023 16:49:33 +0200 rust-index: use the Rust index in `partialmatch`
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Aug 2023 16:49:33 +0200] rev 51210
rust-index: use the Rust index in `partialmatch`
Thu, 03 Aug 2023 14:50:17 +0200 rust-index: add missing special case for null rev
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Aug 2023 14:50:17 +0200] rev 51209
rust-index: add missing special case for null rev This was an oversight, it was never a problem because we didn't use the index much for user-facing things in the past, which is the only real way of getting to this edge case.
Wed, 02 Aug 2023 16:49:17 +0200 rust-index: use the rust index in `shortest`
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Aug 2023 16:49:17 +0200] rev 51208
rust-index: use the rust index in `shortest`
Wed, 02 Aug 2023 14:34:21 +0200 rust-index: add checks that `__contains__` is synchronized
Raphaël Gomès <rgomes@octobus.net> [Wed, 02 Aug 2023 14:34:21 +0200] rev 51207
rust-index: add checks that `__contains__` is synchronized
Mon, 30 Oct 2023 11:03:57 +0100 rust-index: using the Rust index in nodemap updating methods
Georges Racinet <georges.racinet@octobus.net> [Mon, 30 Oct 2023 11:03:57 +0100] rev 51206
rust-index: using the Rust index in nodemap updating methods
Thu, 02 Nov 2023 11:19:54 +0100 rust-index: implementation of __getitem__
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Nov 2023 11:19:54 +0100] rev 51205
rust-index: implementation of __getitem__ Although the removed panic tends to prove if the full test suite did pass that the case when the input is a node id does not happen, it is best not to remove it right now. Raising IndexError is crucial for iteration on the index to stop, given the default CPython sequence iterator, see for instance https://github.com/zpoint/CPython-Internals/blobs/master/BasicObject/iter/iter.md This was spotted by `test-rust-ancestors.py`, which does simple interations on indexes (as preflight checks). In `revlog.c`, `index_getitem` defaults to `index_get` when called on revision numbers, which does raise `IndexError` with the same message as the one we are introducing here.
Wed, 27 Sep 2023 11:34:52 +0200 rust-index: optim note for post-scaffolding removal
Georges Racinet <georges.racinet@octobus.net> [Wed, 27 Sep 2023 11:34:52 +0200] rev 51204
rust-index: optim note for post-scaffolding removal
Thu, 02 Nov 2023 11:16:13 +0100 rust-index: check that the entry bytes are the same in both indexes
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Nov 2023 11:16:13 +0100] rev 51203
rust-index: check that the entry bytes are the same in both indexes This is a temporary measure to show that both the Rust and C indexes are kept in sync. Comes with some related documentation precisions. For comparison of error cases, see `index_entry_binary()` in `revlog.c`.
Sat, 30 Sep 2023 16:15:56 +0200 rust-index: return variables systematic naming convention
Georges Racinet <georges.racinet@octobus.net> [Sat, 30 Sep 2023 16:15:56 +0200] rev 51202
rust-index: return variables systematic naming convention To help knowing at a glance when a method is ready, making us more comofortable when we are close to the final removal of scaffolding, we introduce the systematic variable names `rust_res` and `c_res`. The goal of this series is to always return the formet. We take again the case of `pack_header` as example. Our personal opinion is to usually avoid such poor semantics as `res`, but usually accept it when it close to the actual return, which will be the case in most methods of this series. Also, the name can simply be dropped when we remove the scaffolding. To follow on the example, the body of `pack_header()` should become this in the final version: ``` let index = self.index(py).borrow(); let packed = index.pack_header(args.get_item(py, 0).extract(py)?); Ok(PyBytes::new(py, &packed).into_object()); ``` in these cases it is close to the actual return and will be removed at the end entirely.
Fri, 29 Sep 2023 15:51:49 +0200 rust-index: results comparison helper with details
Georges Racinet <georges.racinet@octobus.net> [Fri, 29 Sep 2023 15:51:49 +0200] rev 51201
rust-index: results comparison helper with details This is a bit simpler to call and has the advantage of systematically log the encountered deviation. To avoid committing dead code, we apply it to the `pack_header` method, that was already returning the Rust result.
Wed, 27 Sep 2023 10:59:04 +0200 rust-index: helper for revision not in index not involving nodemap
Georges Racinet <georges.racinet@octobus.net> [Wed, 27 Sep 2023 10:59:04 +0200] rev 51200
rust-index: helper for revision not in index not involving nodemap This is a good match for exceptions raised from the C implementation, when it is not about a nodemap inconsistency.
Wed, 18 Oct 2023 19:54:18 +0200 rust-index: renamed nodemap error function for rev not in index
Georges Racinet <georges.racinet@octobus.net> [Wed, 18 Oct 2023 19:54:18 +0200] rev 51199
rust-index: renamed nodemap error function for rev not in index The function name was misleading, as the error wording mentions the nodemap, hence would not be appropriate for missing revisions not related to a nodemap lookup.
Thu, 03 Aug 2023 10:28:10 +0200 rust-index: add `pack_header` support
Raphaël Gomès <rgomes@octobus.net> [Thu, 03 Aug 2023 10:28:10 +0200] rev 51198
rust-index: add `pack_header` support
Mon, 30 Oct 2023 10:34:48 +0100 rust-index: support cache clearing
Raphaël Gomès <rgomes@octobus.net> [Mon, 30 Oct 2023 10:34:48 +0100] rev 51197
rust-index: support cache clearing I'm not 100% sure how useful it is outside of perf, but it's still worth implementing.
Thu, 29 Jun 2023 11:37:19 +0200 rust-index: check rindex and cindex return the same get_rev
Raphaël Gomès <rgomes@octobus.net> [Thu, 29 Jun 2023 11:37:19 +0200] rev 51196
rust-index: check rindex and cindex return the same get_rev This is a temporary safeguard while we synchronize both indexes.
Wed, 28 Jun 2023 16:43:39 +0200 rust-index: synchronize remove to Rust index
Raphaël Gomès <rgomes@octobus.net> [Wed, 28 Jun 2023 16:43:39 +0200] rev 51195
rust-index: synchronize remove to Rust index Future steps will bring the two indexes further together until we can rip the C index entirely when running Rust code.
Wed, 28 Jun 2023 11:59:43 +0200 rust-index: remove `__setitem__` method from the mixed index
Raphaël Gomès <rgomes@octobus.net> [Wed, 28 Jun 2023 11:59:43 +0200] rev 51194
rust-index: remove `__setitem__` method from the mixed index This is not defined on the Python or C one, and isn't used anywhere.
Wed, 28 Jun 2023 11:36:22 +0200 rust-index: check equality between rust and cindex for `__len__`
Raphaël Gomès <rgomes@octobus.net> [Wed, 28 Jun 2023 11:36:22 +0200] rev 51193
rust-index: check equality between rust and cindex for `__len__`
Tue, 27 Jun 2023 18:24:54 +0200 rust-index: synchronize append method
Raphaël Gomès <rgomes@octobus.net> [Tue, 27 Jun 2023 18:24:54 +0200] rev 51192
rust-index: synchronize append method We now append to the Rust index just as we do to the C index. Future steps will bring the two indexes further together until we can rip the C index entirely when running Rust code.
Mon, 18 Sep 2023 17:11:11 +0200 rust-revlog: teach the revlog opening code to read the repo options
Raphaël Gomès <rgomes@octobus.net> [Mon, 18 Sep 2023 17:11:11 +0200] rev 51191
rust-revlog: teach the revlog opening code to read the repo options This will become necessary as we start writing revlog data from Rust.
Tue, 27 Jun 2023 17:34:51 +0200 rust-index: pass data down to the Rust index
Raphaël Gomès <rgomes@octobus.net> [Tue, 27 Jun 2023 17:34:51 +0200] rev 51190
rust-index: pass data down to the Rust index This will allow us to start keeping the Rust index synchronized with the cindex as we gradually implement more and more methods in Rust. This will eventually be removed.
Tue, 27 Jun 2023 16:32:09 +0200 rust-index: add append method
Raphaël Gomès <rgomes@octobus.net> [Tue, 27 Jun 2023 16:32:09 +0200] rev 51189
rust-index: add append method This is the first time the Rust index has any notion of mutability. This will be used in a future patch from Python, to start synchronizing the Rust index and the C index.
Mon, 26 Jun 2023 19:16:07 +0200 rust-index: add an abstraction to support bytes added at runtimes
Raphaël Gomès <rgomes@octobus.net> [Mon, 26 Jun 2023 19:16:07 +0200] rev 51188
rust-index: add an abstraction to support bytes added at runtimes In order to support appending data to the Rust index, we need to abstract data access away from the immutable (on-disk) bytes, to seemlessly fetch either from the preexisting data or from the newly added data.
Thu, 29 Jun 2023 16:09:57 +0200 rust-mixed-index: move the mmap keepalive into a function
Raphaël Gomès <rgomes@octobus.net> [Thu, 29 Jun 2023 16:09:57 +0200] rev 51187
rust-mixed-index: move the mmap keepalive into a function The same code will be used for keeping the new index mmap around.
Thu, 29 Jun 2023 15:00:46 +0200 rust-mixed-index: rename variable to make the next change clearer
Raphaël Gomès <rgomes@octobus.net> [Thu, 29 Jun 2023 15:00:46 +0200] rev 51186
rust-mixed-index: rename variable to make the next change clearer We're going to add another mmap reference holder, so let's rename this one first.
Wed, 27 Sep 2023 10:08:32 +0200 rust: fix cargo doc for hg-cpython
Georges Racinet <georges.racinet@octobus.net> [Wed, 27 Sep 2023 10:08:32 +0200] rev 51185
rust: fix cargo doc for hg-cpython
Fri, 15 Dec 2023 11:10:24 +0100 branching: merge with default
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Dec 2023 11:10:24 +0100] rev 51184
branching: merge with default We merge with the current children of the bad merge (37b52b938579)
Fri, 15 Dec 2023 11:08:41 +0100 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 15 Dec 2023 11:08:41 +0100] rev 51183
branching: merge with stable This recreates `37b52b938579` right as a `hg branch --rev 5b186ba40001` screwed up the content.
Thu, 07 Dec 2023 02:07:16 +0100 changelog: disallow delayed write on inline changesets
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Dec 2023 02:07:16 +0100] rev 51182
changelog: disallow delayed write on inline changesets Since this will never happens, we can make the situation invalid and to stop to handling the associated the case. This simplify the random access file reading too.
Mon, 11 Dec 2023 22:27:59 +0100 changelog: never inline changelog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Dec 2023 22:27:59 +0100] rev 51181
changelog: never inline changelog The test suite mostly use small repositories, that implies that most changelog in the tests are inlined. As a result, non-inlined changelog are quite poorly tested. Since non-inline changelog are most common case for serious repositories, this lack of testing is a significant problem that results in high profile issue like the one recently fixed by 66417f55ea33 and 849745d7da89. Inlining the changelog does not bring much to the table, the number of total file saved is negligible, and the changelog will be read by most operation anyway. So this changeset is make it so we never inline the changelog, and de-inline the one that are still inlined whenever we touch them. By doing that, we remove the "dual code path" situation for writing new entry to the changelog and move to a "single code path" situation. Having a single code path simplify the code and make sure it is covered by test (if test cover that situation obviously) This impact all tests that care about the number of file and the exchange size, but there is nothing too complicated in them just a lot of churn. The churn is made "worse" by the fact rust will use the persistent nodemap on any changelog now. Which is overall a win as it means testing the persistent nodemap more and having less special cases. In short, having inline changelog is mostly useless and an endless source of pain. We get rid of it.
Mon, 11 Dec 2023 11:50:55 +0100 test-transaction-safety: glog out irrelevant flag
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Dec 2023 11:50:55 +0100] rev 51180
test-transaction-safety: glog out irrelevant flag The test is focussing on the inline flag, so we glob out the other to highlight that fact and prevent noise in the future.
Mon, 11 Dec 2023 11:43:32 +0100 test-transaction-safety: perform the test on a filelog
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Dec 2023 11:43:32 +0100] rev 51179
test-transaction-safety: perform the test on a filelog This test previously checked the transaction safety of splitting the changelog. The changelog is a special case, with delayed/diverted writes and we will stop inlining it soon. So we keep testing that transaction is safe around inline on another revlog type : a filelog. Minor comestic adjustement will be done in the next changesets.
Thu, 07 Dec 2023 03:40:37 +0100 test: clarify test-parseindex offsets
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Dec 2023 03:40:37 +0100] rev 51178
test: clarify test-parseindex offsets We will make this revlog non-inline, so we clarify the code to make sure it is simple to adjust the test later.
Thu, 07 Dec 2023 06:05:18 +0100 test: use more globing for perf timing
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Dec 2023 06:05:18 +0100] rev 51177
test: use more globing for perf timing Not sure why we kept the number here.
Tue, 12 Dec 2023 12:29:12 +0100 branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 12 Dec 2023 12:29:12 +0100] rev 51176
branching: merge with stable
Thu, 07 Dec 2023 03:49:48 +0100 persistent-nodemap: avoid writing nodemap for empty revlog stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Dec 2023 03:49:48 +0100] rev 51175
persistent-nodemap: avoid writing nodemap for empty revlog The format cannot encode the lack of tip_rev. There is currently nothing known to write such empty nodemap right now, but the change we are preparing on default reveal this issue. So I had rather fix it on stable.
Tue, 12 Dec 2023 11:47:48 +0100 histedit: remove superfluous echo() and endwin() calls (issue6859) stable
Julien Cristau <jcristau@mozilla.com> [Tue, 12 Dec 2023 11:47:48 +0100] rev 51174
histedit: remove superfluous echo() and endwin() calls (issue6859) ncurses patchlevel 20231111 started returning an error from endwin() if called twice without a intervening screen update. Per Sven Joachim in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1058041#17: "AFAICS, invoking curses.echo() and curses.endwin() is superfluous because curses.wrapper already does that for you, and calling curses.endwin() twice throws an error with the newer ncurses. Removing those two lines should fix the problem."
Thu, 07 Dec 2023 09:31:07 -0800 statprof: handle `lineno == None` in more cases
Martin von Zweigbergk <martinvonz@google.com> [Thu, 07 Dec 2023 09:31:07 -0800] rev 51173
statprof: handle `lineno == None` in more cases This continues the work from 972f3e5c94b8. We saw a crash on line 956 but I updated lots of other places as well.
Thu, 07 Dec 2023 14:28:31 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Dec 2023 14:28:31 +0100] rev 51172
branching: merge stable into default
Thu, 07 Dec 2023 14:22:55 +0100 Added signature for changeset 71bd09bebbe3 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Dec 2023 14:22:55 +0100] rev 51171
Added signature for changeset 71bd09bebbe3
Thu, 07 Dec 2023 14:22:46 +0100 Added tag 6.6.1 for changeset 71bd09bebbe3 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Dec 2023 14:22:46 +0100] rev 51170
Added tag 6.6.1 for changeset 71bd09bebbe3
Thu, 07 Dec 2023 14:19:02 +0100 relnotes: add 6.6.1 stable 6.6.1
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Dec 2023 14:19:02 +0100] rev 51169
relnotes: add 6.6.1
Sat, 02 Dec 2023 15:10:28 -0300 procutil: move stdin assignment outside of try-finally block stable
Anton Shestakov <av6@dwimlabs.net> [Sat, 02 Dec 2023 15:10:28 -0300] rev 51168
procutil: move stdin assignment outside of try-finally block There is an stdin variable in the global scope of this module. And in the `finally` block of this try-finally statement we're checking `if stdin is not None`. Let's make sure we don't confuse code check tools into thinking we want to use global stdin by moving this line of code outside of `try`. This was caught by pytype 2023.11.21 on Python 3.11.2.
Sat, 02 Dec 2023 15:02:03 -0300 zeroconf: give inet_aton() str instead of bytes stable
Anton Shestakov <av6@dwimlabs.net> [Sat, 02 Dec 2023 15:02:03 -0300] rev 51167
zeroconf: give inet_aton() str instead of bytes All other uses of this function in this extension are already fixed (i.e. use strings instead of bytes). This was caught by pytype 2023.11.21 on Python 3.11.2.
Wed, 06 Dec 2023 16:29:43 +0100 revlog: avoid wrongly updating the data file location on "divert" stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Dec 2023 16:29:43 +0100] rev 51166
revlog: avoid wrongly updating the data file location on "divert" If we are in the inline case, we need to align the location of the "data" file with the temporary location of the file (i.e. "00changelog.i.a"). However we should not do that for non-inline case… and before this changeset we had been doing it. In addition `index_file` is already a property taking care of updating the "segment file" filename when needed. So we can simply remove all that code. As a result, code trying to read the diverted data before they were committed ended deeply confused as the "00changelog.i.a" file is nothing like the "00changelog.d" file. However nothing corrupted data as all writing where properly handled outside of the "segment file". In "best" cases this small in-memory corruption of the filename when unnoticed until the transaction was committed or rolled back and in the worse case, some data reading was failing during the transaction and resulted in the transaction to be rolled back. However wrong data never reached the disk, so this bug should be have corrupted any repository. This is not catch by tests because most test use a small repository and therefor an inline revlog. In addition the bug only triggers when a changelog read is done in the following "rare" situation: - after some delayed write - after that data have been written in a "divert" file (i.e. `00.changelog.i.a`) - before transaction commit - outside of a "writing" context The issue was introduced in d83d788590a8
Thu, 07 Dec 2023 00:34:08 +0100 revlog: avoid exposing delayed index entry too widely in non-inline revlog stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Dec 2023 00:34:08 +0100] rev 51165
revlog: avoid exposing delayed index entry too widely in non-inline revlog Before this change, the index entry would be seen as "appended" to the data file. It did not hurt too much as there are never accessed for reading, but this was odd. So lets stop doing so.
Wed, 06 Dec 2023 15:38:15 +0100 revlog: add one more assert about state of thing when splitting stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Dec 2023 15:38:15 +0100] rev 51164
revlog: add one more assert about state of thing when splitting This assert is currently happy, but it does not hurt to adds it to clarify expected state and catch potential error in the future.
Wed, 29 Nov 2023 08:32:24 -0800 add: don't attempt to add back removed files unless explicitly listed
Martin von Zweigbergk <martinvonz@google.com> [Wed, 29 Nov 2023 08:32:24 -0800] rev 51163
add: don't attempt to add back removed files unless explicitly listed This fixes the bug demonstrated by the previous patch.
Tue, 28 Nov 2023 22:44:04 -0800 tests: show failure to `hg add -I` a dir->symlink transition
Martin von Zweigbergk <martinvonz@google.com> [Tue, 28 Nov 2023 22:44:04 -0800] rev 51162
tests: show failure to `hg add -I` a dir->symlink transition
Tue, 11 Apr 2023 21:56:16 +0200 setup: try a non-pure version of the local Mercurial if the pure fails
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 11 Apr 2023 21:56:16 +0200] rev 51161
setup: try a non-pure version of the local Mercurial if the pure fails Things like `zstd` can make the pure version fails.
Fri, 01 Dec 2023 22:13:37 +0100 setup: make debug simpler by adding a `__repr__` to `hgcommand`
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 01 Dec 2023 22:13:37 +0100] rev 51160
setup: make debug simpler by adding a `__repr__` to `hgcommand` This help when trying to debug this logic.
Sat, 02 Dec 2023 02:13:23 +0100 censor: fix things around inlining stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 02 Dec 2023 02:13:23 +0100] rev 51159
censor: fix things around inlining The temporary revlog cannot go through the inline → split process as this would break at transaction commit. (that might be fixable, but lets keep things simple for now). We introduce a cleaner way to enforce this as the previous one was broken in 6.6 On the way we remove multiple weird, fragile and broken overwrite of revlog attributes and we focus on passing the configuration across. We also had to update the test to actually create a non-inline revlog.
Sat, 02 Dec 2023 02:12:21 +0100 revlog: add a `may_inline` argument to revlog stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 02 Dec 2023 02:12:21 +0100] rev 51158
revlog: add a `may_inline` argument to revlog This allow for a clean skipping of the inline feature when needed, for example by censor.
Sat, 02 Dec 2023 02:11:20 +0100 revlog: allow explicit passing of config to revlog stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 02 Dec 2023 02:11:20 +0100] rev 51157
revlog: allow explicit passing of config to revlog This will be useful to fix censor in a later changeset.
Sat, 02 Dec 2023 01:06:35 +0100 censor: show that the `not-inline` → `inline` test is broken stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 02 Dec 2023 01:06:35 +0100] rev 51156
censor: show that the `not-inline` → `inline` test is broken The source revlog should not be inlined and it is…
Wed, 15 Nov 2023 18:43:03 +0000 rhg: support rhg status --rev --rev
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 15 Nov 2023 18:43:03 +0000] rev 51155
rhg: support rhg status --rev --rev
Wed, 15 Nov 2023 18:41:33 +0000 rust: add a utility function to merge ordered fallible iterators
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 15 Nov 2023 18:41:33 +0000] rev 51154
rust: add a utility function to merge ordered fallible iterators Adding a function merge_join_results_by, a version of itertools::merge_join_by that works on "fallible" iterators (iterators that can produce errors)
Mon, 16 Oct 2023 18:56:40 +0100 rhg: refactor hg status, make the display code usable for non-dirstate status
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 16 Oct 2023 18:56:40 +0100] rev 51153
rhg: refactor hg status, make the display code usable for non-dirstate status
Sun, 03 Dec 2023 04:49:49 +0100 perf-tags: fix clear_cache_fnodes to actually clear that cache stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 03 Dec 2023 04:49:49 +0100] rev 51152
perf-tags: fix clear_cache_fnodes to actually clear that cache The function was not doing it what it advertise for a long time. So we fix it and we add a way for the perf extensions to detect broken version.
Sun, 03 Dec 2023 04:43:08 +0100 perf-tags: fix the --clear-fnode-cache-rev code stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 03 Dec 2023 04:43:08 +0100] rev 51151
perf-tags: fix the --clear-fnode-cache-rev code It seems like this code never run?
Mon, 04 Dec 2023 17:20:31 +0000 tests: do not fail tests in a state with uncommitted .py file removal stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 04 Dec 2023 17:20:31 +0000] rev 51150
tests: do not fail tests in a state with uncommitted .py file removal The problem is that [hg locate] lists removed files too. We use [hg files] instead because that does not list removed files.
Sat, 02 Dec 2023 00:52:37 -0500 tests: fill in the Windows pattern for `$EADDRNOTAVAIL$` matching stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 02 Dec 2023 00:52:37 -0500] rev 51149
tests: fill in the Windows pattern for `$EADDRNOTAVAIL$` matching This fixes test-https.t on Windows. It looks like the real error translation is "Cannot assign requested address.", and the message here is the start of a longer description, so I'm not sure why this part is emitted. But it's not worth digging into, as it's evidently the same failure.
Sat, 02 Dec 2023 00:34:44 -0500 tests: avoid a cascading failure on Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Sat, 02 Dec 2023 00:34:44 -0500] rev 51148
tests: avoid a cascading failure on Windows The `identify --debug` command here on Windows emits skip updating dirstate: identity mismatch because of the debug switch, which got captured and added to `.hgtags`, and then hijinx ensued. The point of `--debug` seemed to be to get the long hash, so just do that with templating. I have not idea if the message is indicating a problem- there seems to be many more of them in other tests that are not present on Linux.
Fri, 01 Dec 2023 23:58:12 -0500 phabricator: stringify the argument to `getattr()` stable
Matt Harbison <matt_harbison@yahoo.com> [Fri, 01 Dec 2023 23:58:12 -0500] rev 51147
phabricator: stringify the argument to `getattr()` This fixes a "TypeError: getattr(): attribute name must be string" crash and subsequent test spew. This likely broke in 18c8c18993f0 and was missed in CI because `pytest-vcr` is missing.
Mon, 13 Nov 2023 09:19:11 -0800 py3: pass unicode strings to hasattr() throughout stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Nov 2023 09:19:11 -0800] rev 51146
py3: pass unicode strings to hasattr() throughout I guess we missed these instances because they're not covered by tests. This is a graft of 1625fe807c04a490f9516bc8e14140e570c06146 that landed on default.
Mon, 27 Nov 2023 15:22:05 -0500 debugformat: speedup the "plain-cl-delta" check
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 27 Nov 2023 15:22:05 -0500] rev 51145
debugformat: speedup the "plain-cl-delta" check Checking every single revision is too slow, let's use a sampling approach.
Tue, 14 Nov 2023 22:47:17 +0100 templatekw: fix inconsistency of diffstat with diff.merge
pacien <pacien.trangirard@pacien.net> [Tue, 14 Nov 2023 22:47:17 +0100] rev 51144
templatekw: fix inconsistency of diffstat with diff.merge Previously, `-T'{diffstat}'` was giving stats from the diff against p1, regardless of whether `--config diff.merge=yes` is set. This was inconsistent with `log --patch` which is aware of that option.
Wed, 15 Nov 2023 02:39:53 +0100 util: move diff_parent from logcmdutil to diffutil
pacien <pacien.trangirard@pacien.net> [Wed, 15 Nov 2023 02:39:53 +0100] rev 51143
util: move diff_parent from logcmdutil to diffutil This function will be used outside of the log command (in templatekw, used by hgweb, for which logcmdutil is not available). Let's move this function together with the rest of the diff-related utils instead.
Thu, 07 Sep 2023 08:39:21 +0200 logcmdutil: return structured diffstat data for json
zegervdv <zeger@vandevan.net> [Thu, 07 Sep 2023 08:39:21 +0200] rev 51142
logcmdutil: return structured diffstat data for json
Wed, 08 Nov 2023 22:27:32 +0100 cleanup: drop the `bytes` compatibility for attribute related function
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:27:32 +0100] rev 51141
cleanup: drop the `bytes` compatibility for attribute related function We can rely on the builtins directly now.
Wed, 08 Nov 2023 22:20:58 +0100 cleanup: turn `wrapfunction` deprecation warning into an error
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:20:58 +0100] rev 51140
cleanup: turn `wrapfunction` deprecation warning into an error We could simply drop the check, but lets raise explicit error instead of suffering strange error in case of misuse.
Wed, 08 Nov 2023 22:19:20 +0100 cleanup: turn `wrappedfunction` deprecation warning into an error
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:19:20 +0100] rev 51139
cleanup: turn `wrappedfunction` deprecation warning into an error We could simply drop the check, but lets raise explicit error instead of suffering strange error in case of misuse.
Wed, 08 Nov 2023 22:17:41 +0100 cleanup: turn `pathsuboption` deprecation warning into an error
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:17:41 +0100] rev 51138
cleanup: turn `pathsuboption` deprecation warning into an error We could simply drop the check, but lets raise explicit error instead of suffering strange error in case of misuse.
Wed, 08 Nov 2023 22:13:14 +0100 cleanup: drop deprecated config attribute on the revlog class
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:13:14 +0100] rev 51137
cleanup: drop deprecated config attribute on the revlog class This code was marked for deletion in the next cycle. We are now in the next cycle.
Wed, 08 Nov 2023 22:11:00 +0100 cleanup: drop `path.pushloc` deprecated since 6.5
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:11:00 +0100] rev 51136
cleanup: drop `path.pushloc` deprecated since 6.5 This was scheduled for removal, let us remove it.
Wed, 08 Nov 2023 22:10:26 +0100 cleanup: drop `dirstate.is_changing_parent` deprecated since 6.5
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:10:26 +0100] rev 51135
cleanup: drop `dirstate.is_changing_parent` deprecated since 6.5 This was scheduled for removal, let us remove it.
Wed, 08 Nov 2023 22:08:05 +0100 cleanup: remove some code scheduled to be removed after 5.9
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Nov 2023 22:08:05 +0100] rev 51134
cleanup: remove some code scheduled to be removed after 5.9 looks like we missed this when cleaning up previous code.
Tue, 21 Nov 2023 16:22:47 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 21 Nov 2023 16:22:47 +0100] rev 51133
branching: merge stable into default
Tue, 21 Nov 2023 16:20:58 +0100 relnotes: add 6.6 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 21 Nov 2023 16:20:58 +0100] rev 51132
relnotes: add 6.6 There are no differences between the rc and the actual release.
Tue, 21 Nov 2023 16:18:25 +0100 Added signature for changeset 26c57e7a0890 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 21 Nov 2023 16:18:25 +0100] rev 51131
Added signature for changeset 26c57e7a0890
Tue, 21 Nov 2023 16:18:23 +0100 Added tag 6.6 for changeset 26c57e7a0890 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 21 Nov 2023 16:18:23 +0100] rev 51130
Added tag 6.6 for changeset 26c57e7a0890
Mon, 13 Nov 2023 09:19:11 -0800 py3: pass unicode strings to hasattr() throughout
Martin von Zweigbergk <martinvonz@google.com> [Mon, 13 Nov 2023 09:19:11 -0800] rev 51129
py3: pass unicode strings to hasattr() throughout I guess we missed these instances because they're not covered by tests.
Tue, 07 Nov 2023 16:59:37 +0100 Added signature for changeset 27055614b685 stable 6.6
Raphaël Gomès <rgomes@octobus.net> [Tue, 07 Nov 2023 16:59:37 +0100] rev 51128
Added signature for changeset 27055614b685
Tue, 07 Nov 2023 16:59:36 +0100 Added tag 6.6rc0 for changeset 27055614b685 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 07 Nov 2023 16:59:36 +0100] rev 51127
Added tag 6.6rc0 for changeset 27055614b685
Tue, 07 Nov 2023 16:07:53 +0100 relnotes: add 6.6rc0 stable 6.6rc0
Raphaël Gomès <rgomes@octobus.net> [Tue, 07 Nov 2023 16:07:53 +0100] rev 51126
relnotes: add 6.6rc0
Tue, 07 Nov 2023 15:21:11 +0100 branching: merge default into stable for 6.6rc0 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 07 Nov 2023 15:21:11 +0100] rev 51125
branching: merge default into stable for 6.6rc0
Mon, 06 Nov 2023 23:17:10 +0100 unstable: do not consider internal phases when computing unstable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Nov 2023 23:17:10 +0100] rev 51124
unstable: do not consider internal phases when computing unstable The revisions that are not part of the "working" set by other means should not be considered for the evolution related computation. This impact the test introduced in 5f9af8422b31 as this is actually a more semantic fix of the issue.
Mon, 06 Nov 2023 23:15:58 +0100 unstable: use the `_mutablerevs` function when computing content divergent
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Nov 2023 23:15:58 +0100] rev 51123
unstable: use the `_mutablerevs` function when computing content divergent This is a useful function to get the revision relevant to these computation, lets make sure all code use it, so that we can improve that `_mutablerevs` function in a later changeset.
Mon, 06 Nov 2023 23:15:17 +0100 unstable: use the `_mutablerevs` function when computing phase divergent
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 06 Nov 2023 23:15:17 +0100] rev 51122
unstable: use the `_mutablerevs` function when computing phase divergent This is a useful function to get the revision relevant to these computation, lets make sure all code use it, so that we can improve that `_mutablerevs` function in a later changeset.
Mon, 06 Nov 2023 11:07:54 +0100 rust: add explicit resolver field to top-level cargo manifest file
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 11:07:54 +0100] rev 51121
rust: add explicit resolver field to top-level cargo manifest file Since Rust 1.51.0, Cargo has support for a better dependency resolver. Workspace packages (like ours) need to explicitely set the field, so let's. https://doc.rust-lang.org/edition-guide/rust-2021/default-cargo-resolver.html
Mon, 06 Nov 2023 11:06:08 +0100 rust: run a clippy pass with the latest stable version
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 11:06:08 +0100] rev 51120
rust: run a clippy pass with the latest stable version Our current version of clippy is older than the latest stable. The newest version has new lints that are moslty good advice, so let's apply them ahead of time. This has the added benefit of reducing the noise for developpers like myself that use clippy as an IDE helper, as well as being more prepared for a future clippy upgrade.
Mon, 06 Nov 2023 11:02:18 +0100 rust-clippy: ignore clippy's recommendation for "useless" cast
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 11:02:18 +0100] rev 51119
rust-clippy: ignore clippy's recommendation for "useless" cast See explanation inline.
Mon, 06 Nov 2023 17:12:04 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 17:12:04 +0100] rev 51118
branching: merge stable into default
Mon, 06 Nov 2023 15:38:27 +0100 Added signature for changeset c083d9776cb2 stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 15:38:27 +0100] rev 51117
Added signature for changeset c083d9776cb2
Mon, 06 Nov 2023 15:38:15 +0100 Added tag 6.5.3 for changeset c083d9776cb2 stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 15:38:15 +0100] rev 51116
Added tag 6.5.3 for changeset c083d9776cb2
Mon, 06 Nov 2023 15:32:30 +0100 relnotes: add 6.5.3 stable 6.5.3
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 15:32:30 +0100] rev 51115
relnotes: add 6.5.3
Sat, 14 Oct 2023 03:24:13 +0200 revlog: avoid opening and closing the file for each cloned revision stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 14 Oct 2023 03:24:13 +0200] rev 51114
revlog: avoid opening and closing the file for each cloned revision The previous code was flushing files after each new revision, slowing things down. For exemple, with this change, the evolve repository can run `hg debugupgraderepo --run --optimize re-delta-parent` in about 3.4s instead of 4.5 seconds.
Fri, 13 Oct 2023 23:21:46 +0200 censor: accept censored revision during upgrade stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 23:21:46 +0200] rev 51113
censor: accept censored revision during upgrade They can simply be passed by as censored.
Fri, 13 Oct 2023 22:40:10 +0200 censor: show that censored revision prevent repository upgrade stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 22:40:10 +0200] rev 51112
censor: show that censored revision prevent repository upgrade This is not great.
Tue, 31 Oct 2023 22:42:46 -0700 smartset: don't ignore hidden revs when intersecting
Martin von Zweigbergk <martinvonz@google.com> [Tue, 31 Oct 2023 22:42:46 -0700] rev 51111
smartset: don't ignore hidden revs when intersecting This fixes the bug I demonstrated in the previous commit, but I'm not sure at all if it's the right way of doing it.
Tue, 31 Oct 2023 22:33:45 -0700 tests: demonstrate crash in `unstable()` with internal-phase orphans
Martin von Zweigbergk <martinvonz@google.com> [Tue, 31 Oct 2023 22:33:45 -0700] rev 51110
tests: demonstrate crash in `unstable()` with internal-phase orphans
Wed, 18 Oct 2023 14:50:14 +0200 rust-matchers: fix quadratic complexity in `FileMatcher`
Raphaël Gomès <rgomes@octobus.net> [Wed, 18 Oct 2023 14:50:14 +0200] rev 51109
rust-matchers: fix quadratic complexity in `FileMatcher` Concretely, this command: ``` $ echo hg up -r <nodeid>; time hg revert dir1 dir2 -r <othernode> --debug hg up -r <nodeid> real 0m14.690s user 0m14.766s sys 0m5.430s ``` was much slower despite using 16 cores before this change. The approach taken here is the same one used in match.py, in exactmatcher. This changeset was originally written by Valentin Gatien-Baron in a private repository. I have redacted the commit message and did a minor clean up of the code.
Fri, 27 Oct 2023 08:54:41 +0200 revlog: add a small cache of unfiltered chunk
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 Oct 2023 08:54:41 +0200] rev 51108
revlog: add a small cache of unfiltered chunk This can provides a massive boost to the reading of multiple revision and the computation of a valid delta chain. This greatly help operation like `hg log --patch`, delta computation (helping pull/unbundle), linkrev adjustment (helping copy tracing). A first round of benchmark for `hg log --patch --limit 1000` shows improvement in the 10-20% range on "small" repository like pypy or mercurial and large improvements (about 33%) for more complex ones like netbeans and mozilla's. These speeds up are consistent with the improvement to `hg pull` (from a server sending poor deltas) I saw benchmarking this last year. Further benchmark will be run during the freeze. I added some configuration in the experimental space to be able to further test the effect of various tuning for now. This feature should fit well in the "usage/resource profile" configuration that we should land next cycle. When it does not provides a benefit the overhead of the cache seem to be around 2%, a small price for the big improvement. In addition I believe we could shave most of this overhead with a more efficent lru implementation.
Fri, 27 Oct 2023 02:57:09 +0200 revlog: minor refactor in the chunk gather process
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 Oct 2023 02:57:09 +0200] rev 51107
revlog: minor refactor in the chunk gather process We will introduce some caching in this method in the next changeset, we make some of the most "disruptive" change first as touching this could break (and maybe did during the development process).
Tue, 24 Oct 2023 11:08:49 +0200 changelog-delay: move the delay/divert logic inside the (inner) revlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 Oct 2023 11:08:49 +0200] rev 51106
changelog-delay: move the delay/divert logic inside the (inner) revlog Instead of hacking throught the vfs/opener, we implement the delay/divert logic inside the `_InnerRevlog` and `randomaccessfile` object. This will allow to an alternative implementation of the `_InnerRevlog` that does not need to use Python details. As a result, the new implementation can use the transaction less agressively and avoid some extra output since no data had been written yet. That seems like a good side effect.
Thu, 26 Oct 2023 05:37:37 +0200 revlog: add a `canonical_index_file` attribute on inner revlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 26 Oct 2023 05:37:37 +0200] rev 51105
revlog: add a `canonical_index_file` attribute on inner revlog This is currently the same and the index_file but it will become more complex when we start doing delayed write.
Thu, 26 Oct 2023 03:41:58 +0200 changelog-delay: move "delayed" check to a more official API
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 26 Oct 2023 03:41:58 +0200] rev 51104
changelog-delay: move "delayed" check to a more official API To avoid reaching inside the inner object in the future, we needs some official API. We put one of such API early to reduce the size of the final diff.
Thu, 26 Oct 2023 03:29:46 +0200 changelog-delay: move the appender class next to randomaccessfile
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 26 Oct 2023 03:29:46 +0200] rev 51103
changelog-delay: move the appender class next to randomaccessfile We want to move the delay/divert logic at the revlog level (to have all IO related logic in the _InnerRevlog) we start with small piece that are easy to move on their own.
Fri, 20 Oct 2023 12:13:33 +0200 changelog-delay: adds some check around delaying and diverting write
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 20 Oct 2023 12:13:33 +0200] rev 51102
changelog-delay: adds some check around delaying and diverting write Theses assert shows we never call delay or divert if the revlog hold file handle on the revlog's file.
Wed, 25 Oct 2023 23:14:20 +0200 revlog: consolidate cache invalidation within the inner objet
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 Oct 2023 23:14:20 +0200] rev 51101
revlog: consolidate cache invalidation within the inner objet The invalidation of data that belong to the inner object can and should be delegated to the inner object.
Tue, 24 Oct 2023 11:06:04 +0200 shelve: drop some weird manually stripping before transaction abort
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 Oct 2023 11:06:04 +0200] rev 51100
shelve: drop some weird manually stripping before transaction abort I cannot find a case where this is actually useful, so lets triggering strip in the middle of uncommitted transaction.
Thu, 19 Oct 2023 05:19:55 +0200 revlog: move entry writing in the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 05:19:55 +0200] rev 51099
revlog: move entry writing in the inner object This is the second big piece of API we want to live on the inner object. With this the inner object have freedom it needs to implement things internally. (except for the delayed write feature of the changelog, that will be migrated in coming changesets)
Thu, 19 Oct 2023 04:11:39 +0200 revlog: move `sidedata` in the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 04:11:39 +0200] rev 51098
revlog: move `sidedata` in the inner object Same object as rawtext, but for sidedata.
Thu, 19 Oct 2023 03:52:31 +0200 revlog: move the `rawtext` method on the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 03:52:31 +0200] rev 51097
revlog: move the `rawtext` method on the inner object This is one of the current core goal of the inner object: having a "simple" API for some of the core revlog action, like getting a raw text, with the inner object able to do that part internally, on its own.
Thu, 19 Oct 2023 03:33:59 +0200 revlog: move the_revisioncache on the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 03:33:59 +0200] rev 51096
revlog: move the_revisioncache on the inner object The goal for this inner object is to compute that things we cache, it make more sense to have the inner object handle it directly.
Thu, 19 Oct 2023 03:07:39 +0200 revlog: move the `deltachain` method on the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 03:07:39 +0200] rev 51095
revlog: move the `deltachain` method on the inner object This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
Thu, 19 Oct 2023 03:00:58 +0200 revlog: move the `_chunks` method on the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 03:00:58 +0200] rev 51094
revlog: move the `_chunks` method on the inner object This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
Wed, 25 Oct 2023 04:40:40 +0200 revlog: add a couple more of useful method on the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 Oct 2023 04:40:40 +0200] rev 51093
revlog: add a couple more of useful method on the inner object This will be needed for the next changeset.
Thu, 19 Oct 2023 02:57:05 +0200 revlog: move the `_chunk` method on the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 02:57:05 +0200] rev 51092
revlog: move the `_chunk` method on the inner object This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
Wed, 25 Oct 2023 02:13:18 +0200 revlog: move the compression/decompression logic on the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 Oct 2023 02:13:18 +0200] rev 51091
revlog: move the compression/decompression logic on the inner object This is a necessary step before being able to move more logic around restoring a revision content there. For now, we do a simple patch for the perf extension logic, when the implementation of the inner object changes, we will likely need some evolution of the API. However this is true of many things in the perf extension. So we will see this later.
Mon, 23 Oct 2023 14:27:07 +0200 revlog: move the splitting-inline-revlog logic inside the inner object
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 23 Oct 2023 14:27:07 +0200] rev 51090
revlog: move the splitting-inline-revlog logic inside the inner object This is another large IO block that we need to move within the inner object if we want's it to be self sufficient.
Wed, 25 Oct 2023 01:02:47 +0200 revlog: synchronise the various attribute holding the index filename
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 Oct 2023 01:02:47 +0200] rev 51089
revlog: synchronise the various attribute holding the index filename The segmentfile and the attribute need to be synchronized, let's enforce that.
Thu, 19 Oct 2023 01:50:07 +0200 revlog: drop reference to docket in the inline-splitting code
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 Oct 2023 01:50:07 +0200] rev 51088
revlog: drop reference to docket in the inline-splitting code revlog with a docket do not use inline revlog and do not need to split them. So we can remove some code handling docket there.
Tue, 24 Oct 2023 17:03:27 +0200 revlog: move _getsegmentforrevs on the internal object
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 Oct 2023 17:03:27 +0200] rev 51087
revlog: move _getsegmentforrevs on the internal object See inline documentation for details.
Tue, 17 Oct 2023 06:02:33 +0200 revlog: create a iteration of a _InnerRevlog object within the revlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Oct 2023 06:02:33 +0200] rev 51086
revlog: create a iteration of a _InnerRevlog object within the revlog The goal of this object is to isolate a sub-API that can be implemented by a compiled object (e.g. Rust). So the boundary of this object will be arbitrary depending of what can we easily implemented in the Compiled code. For now, we start simple, and move the code that manage the IO objects in the inner object. More will come in the coming changesets. Note: the object definition could live in the different module to thin the `revlog.py` file, however there are other better candidate for extraction first and I have enought patch stacked on top of the this one for the split in this patch not to be worth it. So I leave this to future me.
Tue, 17 Oct 2023 05:17:02 +0200 revlog: drop the unused `_chunkcache` attribute
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Oct 2023 05:17:02 +0200] rev 51085
revlog: drop the unused `_chunkcache` attribute Apparently, some time ago, the chunk cache moved in the randomaccessfile object.
Tue, 17 Oct 2023 04:54:22 +0200 revlog: drop the unused `_sidedatareadfp` method
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 Oct 2023 04:54:22 +0200] rev 51084
revlog: drop the unused `_sidedatareadfp` method It has no caller anywhere and is probably the remains of some older code.
Fri, 13 Oct 2023 16:11:04 +0200 revlog: also migrates `revlog.upperboundcomp` to ConfigClass
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 16:11:04 +0200] rev 51083
revlog: also migrates `revlog.upperboundcomp` to ConfigClass This was planned but overlooked when doing the rest of the migration.
Fri, 13 Oct 2023 16:03:26 +0200 revlog: small doc to the `files` method
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 16:03:26 +0200] rev 51082
revlog: small doc to the `files` method
Wed, 11 Oct 2023 02:19:00 +0200 revlog: remove the `_indexfp` method
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 11 Oct 2023 02:19:00 +0200] rev 51081
revlog: remove the `_indexfp` method The method is only used two time and we want to move that code to a lower level object. So we simply inline the method to simplify further refactoring.
Sat, 14 Oct 2023 03:24:13 +0200 revlog: avoid opening and closing the file for each cloned revision
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 14 Oct 2023 03:24:13 +0200] rev 51080
revlog: avoid opening and closing the file for each cloned revision The previous code was flushing files after each new revision, slowing things down. For exemple, with this change, the evolve repository can run `hg debugupgraderepo --run --optimize re-delta-parent` in about 3.4s instead of 4.5 seconds.
Fri, 13 Oct 2023 23:21:46 +0200 censor: accept censored revision during upgrade
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 23:21:46 +0200] rev 51079
censor: accept censored revision during upgrade They can simply be passed by as censored.
Fri, 13 Oct 2023 22:40:10 +0200 censor: show that censored revision prevent repository upgrade
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 22:40:10 +0200] rev 51078
censor: show that censored revision prevent repository upgrade This is not great.
Thu, 12 Oct 2023 17:41:06 +0100 stream-clone: fix a crash when a repo with an empty revlog is cloned stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 12 Oct 2023 17:41:06 +0100] rev 51077
stream-clone: fix a crash when a repo with an empty revlog is cloned
Tue, 19 Sep 2023 03:15:12 +0200 debug-delta-chain: print less data by default
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Sep 2023 03:15:12 +0200] rev 51076
debug-delta-chain: print less data by default This is faster and simpler to read.
Tue, 19 Sep 2023 03:00:44 +0200 debugdeltachain: add a parameter to display all info
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Sep 2023 03:00:44 +0200] rev 51075
debugdeltachain: add a parameter to display all info This will be useful with the next changeset that change the defaul output to display the minimum amount of information.
Tue, 19 Sep 2023 02:20:49 +0200 debug-delta-chain: actually skip unrequested computation
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Sep 2023 02:20:49 +0200] rev 51074
debug-delta-chain: actually skip unrequested computation Doing quick test on mozilla-unified show we can run up to 2× faster by skipping some of these computation.
Tue, 19 Sep 2023 01:53:03 +0200 debug-delta-chain: add options to control what we compute
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Sep 2023 01:53:03 +0200] rev 51073
debug-delta-chain: add options to control what we compute Currently this mostly controls what we display, but actual computation saving will come soon.
Tue, 19 Sep 2023 01:24:10 +0200 debug-delta-chaing: add a parameter to select revision to look at
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 19 Sep 2023 01:24:10 +0200] rev 51072
debug-delta-chaing: add a parameter to select revision to look at This allows for much faster runtime when we are interrested in some revisions only.
Mon, 18 Sep 2023 23:37:06 +0200 delta-chain: extract some debugdeltachain logic is object
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Sep 2023 23:37:06 +0200] rev 51071
delta-chain: extract some debugdeltachain logic is object Moving from a closure to an object's method will help us to extend the command logic.
Mon, 18 Sep 2023 23:26:00 +0200 delta-chain: move the debugdeltachain command in revlogutils
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 18 Sep 2023 23:26:00 +0200] rev 51070
delta-chain: move the debugdeltachain command in revlogutils There is a dedicated `mercurial.revlogutils.debug` module were this code fits well.
Thu, 12 Oct 2023 09:04:12 +0200 dirstate: document the `changing_*` context manager
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 12 Oct 2023 09:04:12 +0200] rev 51069
dirstate: document the `changing_*` context manager The methods that requires them have documentation, but the context themselves had none. This is now fixed.
Tue, 10 Oct 2023 10:47:46 +0200 revlog: deprecate the compatibility config property
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 10:47:46 +0200] rev 51068
revlog: deprecate the compatibility config property Now that core is no longer use them, we can deprecated them. Let us aim at removing them in the next version.
Tue, 10 Oct 2023 12:03:02 +0200 revlog: remove legacy usage of `_lazydeltabase`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 12:03:02 +0200] rev 51067
revlog: remove legacy usage of `_lazydeltabase` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:36:55 +0200 revlog: remove legacy usage of `_lazydelta`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:36:55 +0200] rev 51066
revlog: remove legacy usage of `_lazydelta` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:36:34 +0200 revlog: remove legacy usage of `canonical_parent_order`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:36:34 +0200] rev 51065
revlog: remove legacy usage of `canonical_parent_order` All core code is now getting the setting from the FeatureConfig object.
Tue, 10 Oct 2023 11:36:23 +0200 revlog: remove legacy usage of `_compute_rank`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:36:23 +0200] rev 51064
revlog: remove legacy usage of `_compute_rank` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:33:33 +0200 revlog: remove legacy usage of `_srmingapsize`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:33:33 +0200] rev 51063
revlog: remove legacy usage of `_srmingapsize` All core code is now getting the setting from the DataConfig object.
Tue, 10 Oct 2023 11:30:07 +0200 revlog: remove legacy usage of `_srdensitythreshold`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:30:07 +0200] rev 51062
revlog: remove legacy usage of `_srdensitythreshold` All core code is now getting the setting from the DataConfig object.
Tue, 10 Oct 2023 11:29:19 +0200 revlog: remove legacy usage of `hassidedata`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:29:19 +0200] rev 51061
revlog: remove legacy usage of `hassidedata` All core code is now getting the setting from the FeatureConfig object.
Tue, 10 Oct 2023 11:27:39 +0200 revlog: remove legacy usage of `_sparserevlog`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:27:39 +0200] rev 51060
revlog: remove legacy usage of `_sparserevlog` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:24:37 +0200 revlog: remove legacy usage of `_withsparseread`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:24:37 +0200] rev 51059
revlog: remove legacy usage of `_withsparseread` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:16:07 +0200 revlog: remove legacy usage of `_maxdeltachainspan`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:16:07 +0200] rev 51058
revlog: remove legacy usage of `_maxdeltachainspan` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:13:24 +0200 revlog: remove legacy usage of `_compengineopts`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:13:24 +0200] rev 51057
revlog: remove legacy usage of `_compengineopts` All core code is now getting the setting from the FeatureConfig object.
Tue, 10 Oct 2023 11:12:06 +0200 revlog: remove legacy usage of `_compengine`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:12:06 +0200] rev 51056
revlog: remove legacy usage of `_compengine` All core code is now getting the setting from the FeatureConfig object.
Wed, 11 Oct 2023 00:04:23 +0200 revlog: remove legacy usage of `_candidate_group_chunk_size`
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 11 Oct 2023 00:04:23 +0200] rev 51055
revlog: remove legacy usage of `_candidate_group_chunk_size` All core code is now getting the setting from the DeltaConfig object.
Wed, 11 Oct 2023 00:04:08 +0200 revlog: remove legacy usage of `_debug_delta`
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 11 Oct 2023 00:04:08 +0200] rev 51054
revlog: remove legacy usage of `_debug_delta` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:07:15 +0200 revlog: remove legacy usage of `_deltabothparents`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:07:15 +0200] rev 51053
revlog: remove legacy usage of `_deltabothparents` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:05:54 +0200 revlog: remove legacy usage of `_maxchainlen`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:05:54 +0200] rev 51052
revlog: remove legacy usage of `_maxchainlen` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 11:04:40 +0200 revlog: remove legacy usage of `_chunkcachesize`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:04:40 +0200] rev 51051
revlog: remove legacy usage of `_chunkcachesize` All core code is now getting the setting from the DataConfig object.
Tue, 10 Oct 2023 11:04:07 +0200 revlog: remove legacy usage of `_censorable`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:04:07 +0200] rev 51050
revlog: remove legacy usage of `_censorable` All core code is now getting the setting from the FeatureConfig object.
Tue, 10 Oct 2023 11:02:24 +0200 revlog: remove legacy usage of `_mmaplargeindex`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:02:24 +0200] rev 51049
revlog: remove legacy usage of `_mmaplargeindex` All core code is now getting the setting from the DataConfig object.
Tue, 10 Oct 2023 11:02:00 +0200 revlog: remove legacy usage of `_checkambig`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 11:02:00 +0200] rev 51048
revlog: remove legacy usage of `_checkambig` All core code is now getting the setting from the DataConfig object.
Tue, 10 Oct 2023 10:58:28 +0200 revlog: drop the _generaldelta attribute from the imanifeststorage interface
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 10:58:28 +0200] rev 51047
revlog: drop the _generaldelta attribute from the imanifeststorage interface It never belonged here.
Tue, 10 Oct 2023 10:56:42 +0200 revlog: remove legacy usage of `_generaldelta`
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 10:56:42 +0200] rev 51046
revlog: remove legacy usage of `_generaldelta` All core code is now getting the setting from the DeltaConfig object.
Tue, 10 Oct 2023 18:02:20 +0200 revlog: use the new Config classes in _testrevlog
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 18:02:20 +0200] rev 51045
revlog: use the new Config classes in _testrevlog the mock object need to follow the new interface. We allow ourself a small hacky import since this is testing code. The legacy attribute are still here because some code still use them. We will drop them when this code is updated.
Tue, 10 Oct 2023 10:04:06 +0200 revlog: skip opener options to pass sparse reading values
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 10:04:06 +0200] rev 51044
revlog: skip opener options to pass sparse reading values We can directly set the option in the config object now.
Tue, 10 Oct 2023 10:03:58 +0200 revlog: skip opener options to pass sparse_revlog value
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 10:03:58 +0200] rev 51043
revlog: skip opener options to pass sparse_revlog value We can directly set the option in the config object now.
Tue, 10 Oct 2023 10:03:50 +0200 revlog: skip opener options to pass mmap_index_threshold value
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 10 Oct 2023 10:03:50 +0200] rev 51042
revlog: skip opener options to pass mmap_index_threshold value We can directly set the option in the config object now.
(0) -30000 -10000 -3000 -1000 -192 +192 +1000 tip