Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 25 Feb 2021 09:59:23 -0500] rev 46709
test: show internal exception with batchable rpcs over ssh
Differential Revision: https://phab.mercurial-scm.org/D10072
Simon Sapin <simon.sapin@octobus.net> [Thu, 04 Mar 2021 13:26:53 +0100] rev 46708
rhg: Ignore trailing newlines in .hg/sharedpath
Differential Revision: https://phab.mercurial-scm.org/D10132
Simon Sapin <simon.sapin@octobus.net> [Tue, 02 Mar 2021 21:31:12 +0100] rev 46707
tests: Add `--rhg` and `--with-rhg=<path>` options for `run-tests.py`
They are mostly equivalent to the corresponding `chg` options.
For now, many tests are still failing in this configuration.
It is *not* run on CI.
Differential Revision: https://phab.mercurial-scm.org/D10095
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Mar 2021 20:36:06 +0100] rev 46706
rhg: Add support for automatic fallback to Python
`rhg` is a command-line application that can do a small subset of what
`hg` can. It is written entirely in Rust, which avoids the cost of starting
a Python interpreter and importing many Python modules.
In a script that runs many `hg` commands, this cost can add up.
However making users decide when to use `rhg` instead of `hg` is
not practical as we want the subset of supported functionality
to grow over time.
Instead we introduce "fallback" behavior where, when `rhg` encounters
something (a sub-command, a repository format, …) that is not implemented
in Rust-only, it does nothing but silently start a subprocess of
Python-based `hg` running the same command.
That way `rhg` becomes a drop-in replacement for `hg` that sometimes
goes faster. Whether Python is used should be an implementation detail
not apparent to users (other than through speed).
A new `fallback` value is added to the previously introduced
`rhg.on-unsupported` configuration key. When in this mode, the new
`rhg.fallback-executable` config is determine what command to use
to run a Python-based `hg`.
The previous `rhg.on-unsupported = abort-silent` configuration was designed
to let a wrapper script call `rhg` and then fall back to `hg` based on the
exit code. This is still available, but having fallback behavior built-in
in rhg might be easier for users instead of leaving that script "as an
exercise for the reader".
Using a subprocess like this is not idea, especially when `rhg` is to be
installed in `$PATH` as `hg`, since the other `hg.py` executable needs
to still be available… somewhere. Eventually this could be replaced
by using PyOxidizer to a have a single executable that embeds a Python
interpreter, but only starts it when needed.
Differential Revision: https://phab.mercurial-scm.org/D10093
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Mar 2021 16:18:42 +0100] rev 46705
rhg: Add a `rhg.on-unsupported` configuration key
For now the two values are:
* `abort-silent`: silently exit with code 252, the previous default behavior
* `abort`: print an error message about what feature
is not supported, then exit with code 252. Now the default.
Differential Revision: https://phab.mercurial-scm.org/D10091
Simon Sapin <simon.sapin@octobus.net> [Mon, 01 Mar 2021 13:51:35 +0100] rev 46704
rhg: Make configuration available as early as possible in main()
Differential Revision: https://phab.mercurial-scm.org/D10090
Simon Sapin <simon.sapin@octobus.net> [Tue, 02 Mar 2021 09:55:52 +0100] rev 46703
rust: Upgrade Cargo.lock to the newer format
As discussed in https://phab.mercurial-scm.org/D10085#153099
See https://github.com/rust-lang/cargo/pull/7070 and
https://blog.rust-lang.org/2020/01/30/Rust-1.41.0.html#less-conflict-prone-cargolock-format
Differential Revision: https://phab.mercurial-scm.org/D10089
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 14:48:36 -0500] rev 46702
sshpeer: enable+fix warning about sshpeers not being closed explicitly
I recommend looking at this with a diff that ignores indentation.
The test changes are because localrepo.close() updates some cache,
which appears happens earlier now on rollbacks or strips or something.
The http changes are because httppeer.close() prints stats with
--verbose.
Differential Revision: https://phab.mercurial-scm.org/D9999
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 14:40:17 -0500] rev 46701
sshpeer: add a develwarning if an sshpeer is not closed explicitly
The warning is disabled until the next commit, because fixing it
results in a noisy diff due to indentation changes.
Differential Revision: https://phab.mercurial-scm.org/D9998
Valentin Gatien-Baron <valentin.gatienbaron@gmail.com> [Mon, 15 Feb 2021 14:15:02 -0500] rev 46700
remotefilelog: rework workaround for sshpeer deadlocks
The wrapping of `sshpeer.cleanup` silently broke when `cleanup` was
renamed to `_cleanup`, a couple of years ago.
I don't know what `orig.im_self` is, but regardless, the intention of
the wrapping seems pretty clear: close stderr before
sshpeer._cleanuppipes blocks on it. So do that.
Differential Revision: https://phab.mercurial-scm.org/D9997