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