Wed, 25 Jan 2023 15:34:27 +0100 admin-command: add verify command
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 Jan 2023 15:34:27 +0100] rev 50997
admin-command: add verify command Start using the 'admin' namespace by adding a 'verify' command. Invocation is 'admin::verify'. The idea is to progressively add more focused checks than the existing verify command. To do so we need an advanced way to express what we want to check. The first check for admin::verify is 'working-copy.dirstate' which has no options, because it was an easy first check to implement, which verifies the integrity of the dirstate. This changeset was created with the help of Franck Bret.
Wed, 13 Sep 2023 12:25:51 +0200 transaction: abstract away the detection of an abandoned transaction
Raphaël Gomès <rgomes@octobus.net> [Wed, 13 Sep 2023 12:25:51 +0200] rev 50996
transaction: abstract away the detection of an abandoned transaction We're about to add another place where this is used, let's not spill this implementation detail.
Wed, 25 Jan 2023 15:33:39 +0100 commands: add admin namespace
Franck Bret <franck.bret@octobus.net> [Wed, 25 Jan 2023 15:33:39 +0100] rev 50995
commands: add admin namespace In order to stop abusing the 'debug' namespace for non-debug command, it adds a new 'admin' namespace dedicated to 'admin' operations on a repository (i.e commands suitable for administration tasks). This namespace entry would be used to migrate in the future some existing commands from the 'debug' namespace, or other top level commands that may not be directly exposed to end users. (verify command is a perfect candidate for this case)
Wed, 09 Aug 2023 15:46:35 +0200 rust-config: fix incorrect coercion of null values to false
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Aug 2023 15:46:35 +0200] rev 50994
rust-config: fix incorrect coercion of null values to false As explained in the previous changeset: Probably being too trigger happy about boolean values, I incorrectly set the transform for a `None` to a `Some(false)`. It would cause for example the `ui.formatted` value to be set to `Some(false)`, which turns off the colors among other things, when `None` would trigger the automatic behavior.
Wed, 09 Aug 2023 15:44:56 +0200 rust-config: show default `null` is coerced incorrectly to `false`
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Aug 2023 15:44:56 +0200] rev 50993
rust-config: show default `null` is coerced incorrectly to `false` Probably being too trigger happy about boolean values, I incorrectly set the transform for a `None` to a `Some(false)`. It would cause for example the `ui.formatted` value to be set to `Some(false)`, which turns off the colors among other things, when `None` would trigger the automatic behavior. This is fixed in the next commit.
Wed, 09 Aug 2023 15:41:18 +0200 rust-config: fix fallback to default not parsing the default value
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Aug 2023 15:41:18 +0200] rev 50992
rust-config: fix fallback to default not parsing the default value When a config item's default is a string, it sometimes needs to be parsed into another type, like in the case of `cmdserver.max-log-size`, that returns a number of bytes from a human-readable amount like `25MB`. The logic for the fix is explained inline.
Tue, 08 Aug 2023 14:14:00 +0200 rust-config: demonstrate a bug when falling back to non-trivial default values
Raphaël Gomès <rgomes@octobus.net> [Tue, 08 Aug 2023 14:14:00 +0200] rev 50991
rust-config: demonstrate a bug when falling back to non-trivial default values The default value (when the user hasn't configured anything) is not run through the value parser, causing a programming error to happen because of type mismatch. This will be fixed in the next commit.
Fri, 18 Aug 2023 14:34:29 +0200 rust: make `Revision` a newtype
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Aug 2023 14:34:29 +0200] rev 50990
rust: make `Revision` a newtype This change is the one we've been building towards during this series. The aim is to make `Revision` mean more than a simple integer, holding the information that it is valid for a given revlog index. While this still allows for programmer error, since creating a revision directly and querying a different index with a "checked" revision are still possible, the friction created by the newtype will hopefully make us think twice about which type to use. Enough of the Rust ecosystem relies on the newtype pattern to be efficiently optimized away (even compiler in codegen testsĀ¹), so I'm not worried about this being a fundamental problem. [1] https://github.com/rust-lang/rust/blob/7a70647f195f6b0a0f1ebd72b1542ba91a32f43a/tests/codegen/vec-in-place.rs#L47
Thu, 10 Aug 2023 11:01:07 +0200 rust: implement the `Graph` trait for all revlogs
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Aug 2023 11:01:07 +0200] rev 50989
rust: implement the `Graph` trait for all revlogs This is trivial and makes all the algorithms relying on the trait usable for more use cases.
Thu, 10 Aug 2023 11:00:34 +0200 rust: use the new `UncheckedRevision` everywhere applicable
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Aug 2023 11:00:34 +0200] rev 50988
rust: use the new `UncheckedRevision` everywhere applicable This step converts all revisions that shouldn't be considered "valid" in any context to `UncheckedRevison`, allowing `Revision` to be changed for a stronger type in a later changeset. Note that the conversion from unchecked to checked is manual and requires at least some thought from the programmer, although directly using `Revision` is still possible. A later changeset will make this mistake harder to make.
(0) -30000 -10000 -3000 -1000 -300 -100 -10 +10 +100 +300 tip