Raphaël Gomès <rgomes@octobus.net> [Mon, 13 Feb 2023 18:11:48 +0100] rev 50803
rust-config: add config getters that don't fall back to defaults
This is useful in cases where we access config items that are more... lenient
with their types than a fresh new system would allow.
For now there is only a single use of this, but we might get more later.
Raphaël Gomès <rgomes@octobus.net> [Thu, 06 Jul 2023 14:32:07 +0200] rev 50802
rust-config: add support for default config items
Now that configitems.toml exists, we can read from it the default values for
all core config items.
We will add the devel-warning for use of undeclared config items in a later
patch when we're done adding the missing entries for `rhg`.
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Jan 2023 18:08:11 +0100] rev 50801
configitems: declare items in a TOML file
Mercurial ships with Rust code that also needs to read from the config.
Having a way of presenting `configitems` to both Python and Rust is needed
to prevent duplication, drift, and have the appropriate devel warnings.
Abstracting away from Python means choosing a config format. No single format
is perfect, and I have yet to come across a developer that doesn't hate all of
them in some way.
Since we have a strict no-dependencies policy for Mercurial, we either need
to use whatever comes with Python, vendor a library, or implement a custom
format ourselves.
Python stdlib means using JSON, which doesn't support comments and isn't great
for humans, or `configparser` which is an obscure, untyped format that nobody
uses and doesn't have a commonplace Rust parser.
Implementing a custom format is error-prone, tedious and subject to the
same issues as picking an existing format.
Vendoring opens us to the vast array of common config formats. The ones
being picked for most modern software are YAML and TOML. YAML is older and
common in the Python community, but TOML is much simpler and less error-prone.
I would much rather be responsible for the <1000 lines of `tomli`, on top of
TOML being the choice of the Rust community, with robust crates for reading it.
The structure of `configitems.toml` is explained inline.
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Jan 2023 17:11:42 +0100] rev 50800
thirdparty: vendor tomli
The next commit will introduce a .toml file to abstract configitems
away from Python. Python 3.11 has a toml read-only library (`tomllib`), which
gives us a way out of vendoring eventually.
For now, we vendor the backport, specifically version 1.2.3 which is still
compatible with Python 3.6.
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Jan 2023 18:52:05 +0100] rev 50799
configitems: add `documentation` field
It may be useful to expose documentation information in the help in some form.
This will be populated in a future changeset by using the current comments
that are relevant for users.
Raphaël Gomès <rgomes@octobus.net> [Mon, 23 Jan 2023 17:21:14 +0100] rev 50798
configitems: use standard "dynamicdefault" approach in edge case
This makes for fewer edge cases, which will help a future patch.
Raphaël Gomès <rgomes@octobus.net> [Tue, 17 Jan 2023 14:53:18 +0100] rev 50797
configitems: fix typo in devel warning about extension overrides
Raphaël Gomès <rgomes@octobus.net> [Thu, 06 Jul 2023 16:07:34 +0200] rev 50796
branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 15:38:27 +0100] rev 50795
Added signature for changeset c083d9776cb2
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 15:38:15 +0100] rev 50794
Added tag 6.5.3 for changeset c083d9776cb2
Raphaël Gomès <rgomes@octobus.net> [Mon, 06 Nov 2023 15:32:30 +0100] rev 50793
relnotes: add 6.5.3
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 14 Oct 2023 03:24:13 +0200] rev 50792
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.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 23:21:46 +0200] rev 50791
censor: accept censored revision during upgrade
They can simply be passed by as censored.
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 Oct 2023 22:40:10 +0200] rev 50790
censor: show that censored revision prevent repository upgrade
This is not great.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 12 Oct 2023 17:41:06 +0100] rev 50789
stream-clone: fix a crash when a repo with an empty revlog is cloned
Joerg Sonnenberger <joerg@bec.de> [Tue, 10 Oct 2023 18:29:04 +0200] rev 50788
cleanup: typos, formatting
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 24 Sep 2023 04:35:02 +0200] rev 50787
tests: backed out changeset 8037ddacad47
This issue with 3.11 was real, but it eventually got fixed after people started
building exploit and filling CVE
See https://github.com/python/cpython/issues/106242
And https://github.com/python/cpython/pull/106816
Anton Shestakov <av6@dwimlabs.net> [Thu, 05 Oct 2023 14:47:42 -0300] rev 50786
httppeer: fix static-http: scheme autodetection (issue6833)
Since statichttprepo.make_peer() assumes path is a urlutil.path object (by
accessing path.loc), we no longer can just provide a bytestring there.
See also 5f71fff8dc74 and cfe8d88a453e.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 14 Sep 2023 10:52:09 +0100] rev 50785
revlog: make the rust test for node hex prefix resolution exercise the nodemap
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 13 Sep 2023 18:28:51 +0100] rev 50784
revlog: fix a bug where NULL_NODE failed to be resolved to NULL_REV
The problem is that nodemap already takes care about NULL_NODE
resolution (in `validate_candidate` in `nodemap.rs`), so the special
handling in `rev_from_node` is unnecessary and incorrect.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 14 Sep 2023 11:03:41 +0100] rev 50783
tests: reproduce the nullrev bug in an end-to-end test
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 21 Jun 2023 21:57:44 +0200] rev 50782
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 50781
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 50780
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 50779
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 50778
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 50777
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:11:12 +0200] rev 50776
Added signature for changeset 5a8b54201039
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Sep 2023 18:11:10 +0200] rev 50775
Added tag 6.5.2 for changeset 5a8b54201039
Raphaël Gomès <rgomes@octobus.net> [Wed, 06 Sep 2023 18:10:44 +0200] rev 50774
relnotes: add 6.5.2