Martin von Zweigbergk <martinvonz@google.com> [Wed, 13 Apr 2022 07:58:49 -0700] rev 49072
absorb: make `--edit-lines` imply `--apply-changes`
One of our users tried to use `hg absorb -e` but it seemed that it
would only bring up the editor if there were no changes the command
could automatically detect destination for. I spent probably half an
hour debugging why it worked that way. I finally figured out that it
does bring up the editor, but you have to answer "yes" to the "apply
changes" prompt *first*. That seems very unintuitive. If the user
wants to edit the changes, there seems to be little reason to present
them with a prompt first, so let's have `-e/--edit-lines` imply
`-a/--apply-changes`. All the tests using `-e` also already used
`-a`. I changed them to rely on the implied `-a` so we get coverage of
that.
Differential Revision: https://phab.mercurial-scm.org/D12550
Arseniy Alekseyev <aalekseyev@janestreet.com> [Wed, 13 Apr 2022 14:40:11 +0100] rev 49071
branchmap: add a test that shows bad interaction with strip
Differential Revision: https://phab.mercurial-scm.org/D12549
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 12 Apr 2022 20:01:49 +0100] rev 49070
rhg: refactor to pass argv down, instead of caling args_os()
This refactoring makes it easy to patch some command-line preprocessing into rhg.
We use this to support using rhg as a shebang interpreter, for example.
Differential Revision: https://phab.mercurial-scm.org/D12543
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 12 Apr 2022 19:40:37 +0100] rev 49069
narrow: support debugupgraderepo
Differential Revision: https://phab.mercurial-scm.org/D12542
Matt Harbison <matt_harbison@yahoo.com> [Wed, 13 Apr 2022 14:46:22 -0400] rev 49068
procutil: avoid `+= None` when writing to full std{err,out} descriptor on py3
The write function returns `None` if there was no room to write the given
data[1]. I don't like that this is effectively an infinite loop if there's
never any progress emptying the underlying buffer, but we're no worse off than
before, and it fixes random stacktrace popups seen in the py3 build of
TortoiseHg.
[1] https://docs.python.org/3/library/io.html#io.RawIOBase.write
Differential Revision: https://phab.mercurial-scm.org/D12555
Martin von Zweigbergk <martinvonz@google.com> [Mon, 18 Apr 2022 20:45:38 -0700] rev 49067
amend: don't remove unselected removals from memctx
When there are removed files in the working copy and they are not
selected to be amended into the parent, the `filectxfn` we create for
the `memctx` would still return `None` before this patch. That's
clearly incorrect; we should return the `filectx` from the unamended
commit. Somehow it seems to not matter much except for the case with
copies stored in changesets.
Thanks to Kyle Lippincott for doing all the debugging and identifying
the fix for this issue.
Differential Revision: https://phab.mercurial-scm.org/D12573
Martin von Zweigbergk <martinvonz@google.com> [Mon, 18 Apr 2022 20:39:31 -0700] rev 49066
tests: demonstrate crash on partial amend with copies in changesets
See the fix in the next patch for explanation.
Differential Revision: https://phab.mercurial-scm.org/D12572
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Apr 2022 12:06:32 -0700] rev 49065
rust-revlog: add methods for getting parent revs and entries
Differential Revision: https://phab.mercurial-scm.org/D12442
Martin von Zweigbergk <martinvonz@google.com> [Tue, 05 Apr 2022 08:47:04 -0700] rev 49064
rust-changelog: start parsing changeset data
This patch makes `ChangelogRevisionData` do some coarse, line-level
splitting of the changeset data into manifest node, user, timestamp,
files list, and description. There are no (in-tree) users of these
functions yet, but I've added tests to prevent regressions. We'll
surely add callers at some point.
Differential Revision: https://phab.mercurial-scm.org/D12439
Martin von Zweigbergk <martinvonz@google.com> [Mon, 04 Apr 2022 23:27:16 -0700] rev 49063
rust-changelog: remove special parsing of empty changelog data for null rev
For the null revision, `Revlog::get_rev_data()` will return an empty
string (of bytes). We currently handle that case in
`ChangelogRevisionData::manifest_node()`. However, it's going to be
ugly to have special handling for the null revision for each future
method on `ChangelogRevisionData`. This patch therefore restructures
the code so we instead initialize the struct with valid data for the
null revision.
Differential Revision: https://phab.mercurial-scm.org/D12438
Martin von Zweigbergk <martinvonz@google.com> [Thu, 31 Mar 2022 22:06:26 -0700] rev 49062
rust-changelog: don't skip empty lines when iterating over changeset lines
The first empty line in the changeset indicates the end of headers and
beginning of description. Callers can't know figure out where that
position is if empty lines are skipped.
Differential Revision: https://phab.mercurial-scm.org/D12426
Martin von Zweigbergk <martinvonz@google.com> [Thu, 31 Mar 2022 22:02:46 -0700] rev 49061
rust-requirements: allow loading repos with `bookmarksinstore` requirement
`rhg` does support bookmarks, so it can load repos with the
`bookmarksinstore` requirement just as well as other repos.
Differential Revision: https://phab.mercurial-scm.org/D12425
Kyle Lippincott <spectral@google.com> [Wed, 13 Apr 2022 12:14:17 -0700] rev 49060
rebase: while rewriting desc hashes, ignore ambiguous prefix "hashes"
If a repo is sufficiently large, a six digit number "hash prefix" can somewhat
easily reference an ambiguous hash prefix.
Differential Revision: https://phab.mercurial-scm.org/D12552
Kyle Lippincott <spectral@google.com> [Wed, 13 Apr 2022 13:15:33 -0700] rev 49059
tests: add test demonstrating issue with ambiguous has prefixes during rebase
Differential Revision: https://phab.mercurial-scm.org/D12551
Julien Cristau <jcristau@debian.org> [Sat, 09 Apr 2022 14:43:30 +0200] rev 49058
test: accept another error message on lack of TLS client certificate
Differential Revision: https://phab.mercurial-scm.org/D12492
Julien Cristau <jcristau@debian.org> [Sat, 09 Apr 2022 14:41:55 +0200] rev 49057
sslutil: support TLSV1_ALERT_PROTOCOL_VERSION reason code
It looks like python 3.10 returns a different reason code on protocol
version mismatch.
Differential Revision: https://phab.mercurial-scm.org/D12491
Julien Cristau <jcristau@debian.org> [Sat, 09 Apr 2022 14:28:17 +0200] rev 49056
test: override default cipher selection when connecting to TLS 1.0/1.1 servers
The default set of ciphers on python 3.10 is incompatible with old TLS
versions.
Differential Revision: https://phab.mercurial-scm.org/D12490
Julien Cristau <jcristau@debian.org> [Sat, 09 Apr 2022 14:23:52 +0200] rev 49055
sslutil: be less strict about which ciphers are allowed when using --insecure
Python 3.10 restricted which ciphers are enabled by default, leading to
no available ciphers for TLS < 1.2. When using the --insecure flag we
allow old TLS, so also adjust the cipher list to give connections a
chance to work.
On the server side, also loosen the cipher selection in tests (when
using the devel.serverexactprotocol option).
Differential Revision: https://phab.mercurial-scm.org/D12489
Julien Cristau <jcristau@debian.org> [Sat, 09 Apr 2022 14:15:32 +0200] rev 49054
sslutil: avoid deprecation warnings from python 3.10's ssl module
Use ssl.PROTOCOL_TLS_{CLIENT,SERVER} and
SSLContext.{min,max}imum_version when supported (3.7+).
And, catch deprecation warnings when the user asks for deprecated TLS
versions (1.0 and 1.1).
Differential Revision: https://phab.mercurial-scm.org/D12488
Julien Cristau <jcristau@debian.org> [Wed, 06 Apr 2022 22:29:49 +0200] rev 49053
zeroconf: fix deprecation warning with python 3.10
threading.condition.notifyAll → threading.condition.notify_all
Differential Revision: https://phab.mercurial-scm.org/D12487
Julien Cristau <jcristau@debian.org> [Mon, 11 Apr 2022 11:14:55 +0200] rev 49052
test: deal with changed error message on python 3.10
Differential Revision: https://phab.mercurial-scm.org/D12493
Julien Cristau <jcristau@debian.org> [Mon, 02 Dec 2019 14:45:00 +0100] rev 49051
mail: don't complain about a multi-word email.method
I want to be able to set email.method to "ssh relay /usr/sbin/sendmail"
without needing an extra trivial shell script.
This works fine since we pass the full command to a shell, except for
validateconfig trying to find it in $PATH.
Differential Revision: https://phab.mercurial-scm.org/D7542
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Apr 2022 15:53:48 +0200] rev 49050
help: set the large-file-limit to 10MB
This is a minor increase (5%) and makes the doc much clearer.
Differential Revision: https://phab.mercurial-scm.org/D12484
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 07 Apr 2022 15:46:07 +0200] rev 49049
help: clarify the unit of `ui.large-file-limit` config
Its might be a bit confusing, especially since `large-file.min-size` uses MB.
Differential Revision: https://phab.mercurial-scm.org/D12483
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Apr 2022 18:39:15 +0200] rev 49048
debuglock: ignore ENOENT error when unlocking
This is consistent with the main `lock.release` code.
Differential Revision: https://phab.mercurial-scm.org/D12481
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Apr 2022 18:50:20 +0200] rev 49047
run-tests: introduce "forward-slash" version of everything on windows
This should be useful for some shell invocation.
Differential Revision: https://phab.mercurial-scm.org/D12480
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 06 Apr 2022 18:44:21 +0200] rev 49046
tests-racy-mutation: pass the editor through config instead of env variable
On Windows msys seems to do awful mangling of the environment variable content
that confuses everything to the death. Going through the config works fine, so
we do that instead.
Differential Revision: https://phab.mercurial-scm.org/D12479
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Mar 2022 18:53:55 +0200] rev 49045
rust-dirstate: don't return a state for untracked entries
This `state` API is a remnant of the former API and is slated for removal at
some point. Any caller of this function will expect an entry that is tracked
in the larger sense.
Differential Revision: https://phab.mercurial-scm.org/D12448
Raphaël Gomès <rgomes@octobus.net> [Tue, 22 Mar 2022 16:33:18 +0100] rev 49044
dirstate: remove v1_* methods from Python/C/Rust shared API
These methods are used for v1 parsing by their respective implementations, but
do not need to be shared between them.
Differential Revision: https://phab.mercurial-scm.org/D12447
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Mar 2022 13:01:42 +0200] rev 49043
rust-dirstate-entry: fix typo in panic message
Differential Revision: https://phab.mercurial-scm.org/D12446
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Mar 2022 13:00:57 +0200] rev 49042
test-
issue660: add dirstate-v2 variant
It's basically a dirstate test, so it makes sense to test out the new version.
Differential Revision: https://phab.mercurial-scm.org/D12445
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Mar 2022 13:00:14 +0200] rev 49041
test-
issue660: test inside a repository, not the test dir
This causes an issue with a temporary file showing up in test output
when adding a dirstate-v2 variant of this test.
Differential Revision: https://phab.mercurial-scm.org/D12444