Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Aug 2023 15:46:35 +0200] rev 50983
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.
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Aug 2023 15:44:56 +0200] rev 50982
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.
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Aug 2023 15:41:18 +0200] rev 50981
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.
Raphaël Gomès <rgomes@octobus.net> [Tue, 08 Aug 2023 14:14:00 +0200] rev 50980
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.
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Aug 2023 14:34:29 +0200] rev 50979
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
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Aug 2023 11:01:07 +0200] rev 50978
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.
Raphaël Gomès <rgomes@octobus.net> [Thu, 10 Aug 2023 11:00:34 +0200] rev 50977
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.
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Sep 2023 11:52:33 +0200] rev 50976
rust-revlog: split logic for `rawdata` to prepare for `UncheckedRevision` use
In the next changeset, we will change the logic to use `UncheckedRevision`
in the non-general delta case. The general delta case will use the "checked"
path since `base_rev_or_base_of_delta_chain` will be checked.
Raphaël Gomès <rgomes@octobus.net> [Mon, 07 Aug 2023 15:07:48 +0200] rev 50975
rust: remove unused error variant
All paths check that the working directory revision is not used.
Raphaël Gomès <rgomes@octobus.net> [Mon, 07 Aug 2023 12:53:43 +0200] rev 50974
rust: add `UncheckedRevision` type
This is the start of a series whose aim is to separate "checked" and
"unchecked" revision numbers. A "checked" revision number is valid for a given
index, allowing us to have faster algorithms that don't do redundant checks
all the time and have a clearer view of the kinds of revisions
we're working with.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:57:48 -0400] rev 50973
debugwireproto: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:54:01 -0400] rev 50972
debugwireargs: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:49:57 -0400] rev 50971
debugwalk: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:47:52 -0400] rev 50970
debug_revlog_stats: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:46:44 -0400] rev 50969
debugbackupbundle: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:43:52 -0400] rev 50968
debugsidedata: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:41:01 -0400] rev 50967
debugserve: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:39:22 -0400] rev 50966
debugrevspec: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:36:36 -0400] rev 50965
debugrevlogindex: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:35:13 -0400] rev 50964
debugrevlog: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:34:13 -0400] rev 50963
debugrename: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:33:00 -0400] rev 50962
debugrebuildfncache: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:31:53 -0400] rev 50961
debugpickmergetool: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:29:56 -0400] rev 50960
debugp2copies: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:29:05 -0400] rev 50959
debugp1copies: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:26:56 -0400] rev 50958
debugobsolete: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:23:16 -0400] rev 50957
debugmergestate: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:20:14 -0400] rev 50956
debugknown: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:18:56 -0400] rev 50955
debuginstall: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:16:43 -0400] rev 50954
debugindexdot: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:15:30 -0400] rev 50953
debuggetbundle: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:14:18 -0400] rev 50952
debugformat: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:12:03 -0400] rev 50951
debugfileset: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:09:45 -0400] rev 50950
debugextensions: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 17:06:47 -0400] rev 50949
debugdiscovery: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 16:58:23 -0400] rev 50948
debugdeltafind: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 16:56:38 -0400] rev 50947
debugdeltachain: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 16:53:16 -0400] rev 50946
debugdata: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 16:51:07 -0400] rev 50945
debugcapabilities: migrate `opts` to native kwargs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 21 Aug 2023 16:19:51 -0400] rev 50944
debugbundle: migrate `opts` to native kwargs
This is a utility function that's only called by `debugbundle()`. The rest of
the command was previously ported.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 08 Sep 2023 20:34:41 +0200] rev 50943
branching: merge with stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 21 Jun 2023 21:57:44 +0200] rev 50942
tags: avoid expensive access to repo.changelog in a loop
repo.changelog needs some cache invalidation when run on filtered repository.
Accessing it in that loop can be expensive when there is many heads (e.g.
mozilla try and it 25 000 heads).
Note that the loop itself seems useless, but after this patch it no longer take
about ⅛ of the time we spend computing cache for mozilla try.
before :
! wall 0.350994 comb 0.350000 user 0.330000 sys 0.020000 (median of 28)
after :
! wall 0.319520 comb 0.310000 user 0.290000 sys 0.020000 (median of 30)
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 22 Jun 2023 19:41:26 +0200] rev 50941
blackbox: add a option to duplicate output to stderr too
This is useful when debugging some performance operation.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 23 Jun 2023 17:22:42 +0200] rev 50940
perf: add a --update-last flag to perf::tags
See inline documentation for details.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 22 Jun 2023 18:39:29 +0200] rev 50939
perf: add a `--clear-fnode-cache-rev` argument to perf::tags
This will help us test this in situation closer to an update after a commit or a
push.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 22 Jun 2023 16:03:18 +0200] rev 50938
perf: introduce more cache invalidation option in perf::tags
This will help us to assert the performance of different versions in more
diverse situations.
We introduce helper function in the tags module in case invalidating such cache
becomes different in the future.
Manuel Jacob <me@manueljacob.de> [Fri, 08 Sep 2023 15:33:03 +0200] rev 50937
hgweb: pass strings in WSGI environment correctly from wsgicgi
According to PEP 3333, the strings in the WSGI environment must be translatable
to bytes using the ISO-8859-1 codec.
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Sep 2023 18:12:27 +0200] rev 50936
branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Sep 2023 18:11:12 +0200] rev 50935
Added signature for changeset
5a8b54201039
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Sep 2023 18:11:10 +0200] rev 50934
Added tag 6.5.2 for changeset
5a8b54201039
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Sep 2023 18:10:44 +0200] rev 50933
relnotes: add 6.5.2
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 30 Aug 2023 12:24:12 +0200] rev 50932
run-tests: detect HGWITHRUSTEXT value
Without this, some manual check in tests/test-dirstate.t could get confused by
the lack of `rust` in module policy and break the test.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 30 Aug 2023 11:31:05 +0100] rev 50931
tests: avoid test environment affecting setup.py
In particular [RHG_FALLBACK_EXECUTABLE] is being set prematurely,
before rhg is built, but probably the rest of the env changes don't help,
either.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 04 Sep 2023 13:33:32 +0100] rev 50930
setup: make the error "Unable to find a working hg binary" more informative
The error message now shows the attempted hg commands and their stderr, to
make it easier to investigate why things are not working.
Here's an example output
/!\
/!\ Unable to find a working hg binary
/!\ Version cannot be extracted from the repository
/!\ Re-run the setup once a first version is built
/!\ Attempts:
/!\ attempt #0:
/!\ cmd: ['hg-missing', 'log', '-r.', '-Ttest']
/!\ exception: [Errno 2] No such file or directory: 'hg-missing': 'hg-missing'
/!\ attempt #1:
/!\ cmd: ['/usr/bin/python3', 'hg', 'log', '-r.', '-Ttest']
/!\ return code: 255
/!\ std output:
/!\ std error:
*** failed to import extension "topic": No module named 'topic'
*** failed to import extension "evolve": No module named 'evolve'
abort: accessing `dirstate-v2` repository without associated fast implementation.
(check `hg help config.format.use-dirstate-v2` for details)
/!\
/!\ Could not determine the Mercurial version
/!\ You need to build a local version first
/!\ Run `make local` and try again
/!\
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 01 Sep 2023 00:09:55 +0200] rev 50929
pycompat: drop usage of hasattr/getattr/setattr/delatt proxy
The function remains to ease extensions transition, but we no longer use them in
core.
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 31 Aug 2023 23:56:15 +0200] rev 50928
safehasattr: drop usage in favor of hasattr
The two functions should now be equivalent at least in their usage in core.