Mon, 18 Apr 2022 20:45:38 -0700 amend: don't remove unselected removals from memctx stable
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
Mon, 18 Apr 2022 20:39:31 -0700 tests: demonstrate crash on partial amend with copies in changesets stable
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
Tue, 05 Apr 2022 12:06:32 -0700 rust-revlog: add methods for getting parent revs and entries
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
Tue, 05 Apr 2022 08:47:04 -0700 rust-changelog: start parsing changeset data
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
Mon, 04 Apr 2022 23:27:16 -0700 rust-changelog: remove special parsing of empty changelog data for null rev
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
Thu, 31 Mar 2022 22:06:26 -0700 rust-changelog: don't skip empty lines when iterating over changeset lines
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
Thu, 31 Mar 2022 22:02:46 -0700 rust-requirements: allow loading repos with `bookmarksinstore` requirement
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
Wed, 13 Apr 2022 12:14:17 -0700 rebase: while rewriting desc hashes, ignore ambiguous prefix "hashes" stable
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
Wed, 13 Apr 2022 13:15:33 -0700 tests: add test demonstrating issue with ambiguous has prefixes during rebase stable
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
Sat, 09 Apr 2022 14:43:30 +0200 test: accept another error message on lack of TLS client certificate
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
Sat, 09 Apr 2022 14:41:55 +0200 sslutil: support TLSV1_ALERT_PROTOCOL_VERSION reason code
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
Sat, 09 Apr 2022 14:28:17 +0200 test: override default cipher selection when connecting to TLS 1.0/1.1 servers
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
Sat, 09 Apr 2022 14:23:52 +0200 sslutil: be less strict about which ciphers are allowed when using --insecure
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
Sat, 09 Apr 2022 14:15:32 +0200 sslutil: avoid deprecation warnings from python 3.10's ssl module
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
Wed, 06 Apr 2022 22:29:49 +0200 zeroconf: fix deprecation warning with python 3.10
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
Mon, 11 Apr 2022 11:14:55 +0200 test: deal with changed error message on python 3.10
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
Mon, 02 Dec 2019 14:45:00 +0100 mail: don't complain about a multi-word email.method
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
Thu, 07 Apr 2022 15:53:48 +0200 help: set the large-file-limit to 10MB stable
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
Thu, 07 Apr 2022 15:46:07 +0200 help: clarify the unit of `ui.large-file-limit` config stable
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
Wed, 06 Apr 2022 18:39:15 +0200 debuglock: ignore ENOENT error when unlocking stable
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
Wed, 06 Apr 2022 18:50:20 +0200 run-tests: introduce "forward-slash" version of everything on windows stable
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
Wed, 06 Apr 2022 18:44:21 +0200 tests-racy-mutation: pass the editor through config instead of env variable stable
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
Mon, 28 Mar 2022 18:53:55 +0200 rust-dirstate: don't return a state for untracked entries
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
Tue, 22 Mar 2022 16:33:18 +0100 dirstate: remove v1_* methods from Python/C/Rust shared API
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
Mon, 28 Mar 2022 13:01:42 +0200 rust-dirstate-entry: fix typo in panic message
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
Mon, 28 Mar 2022 13:00:57 +0200 test-issue660: add dirstate-v2 variant
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
Mon, 28 Mar 2022 13:00:14 +0200 test-issue660: test inside a repository, not the test dir
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
Wed, 23 Mar 2022 15:15:17 +0100 dirstate: fix some typos in docstrings
Raphaël Gomès <rgomes@octobus.net> [Wed, 23 Mar 2022 15:15:17 +0100] rev 49040
dirstate: fix some typos in docstrings I was passing by and they've been bothering me. :) Differential Revision: https://phab.mercurial-scm.org/D12443
Mon, 04 Apr 2022 13:36:37 +0000 path: explicitly declare the `pushurl` suboption
Raphaël Gomès <rgomes@octobus.net> [Mon, 04 Apr 2022 13:36:37 +0000] rev 49039
path: explicitly declare the `pushurl` suboption This will help documentation and discovery. Differential Revision: https://phab.mercurial-scm.org/D12437
Thu, 07 Apr 2022 15:29:02 +0200 setup: fix incomplete implementation of Command
Raphaël Gomès <rgomes@octobus.net> [Thu, 07 Apr 2022 15:29:02 +0200] rev 49038
setup: fix incomplete implementation of Command `test-install.t` fails without the `get_outputs` method being implemented, which is used when, `self.report` is `True`. When 8d7eaff92f9c introduced this change, they probably ran `test-install.t` without `HGTESTS_ALLOW_NETIO=1`, which does not trigger this codepath. Differential Revision: https://phab.mercurial-scm.org/D12482
Mon, 04 Apr 2022 15:36:32 +0200 path: explicitly declare the `pushrev` suboptions
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 04 Apr 2022 15:36:32 +0200] rev 49037
path: explicitly declare the `pushrev` suboptions This will help documentation and discovery. Differential Revision: https://phab.mercurial-scm.org/D12436
Mon, 04 Apr 2022 15:36:17 +0200 path: explicitly declare the `multi-urls` suboptions
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 04 Apr 2022 15:36:17 +0200] rev 49036
path: explicitly declare the `multi-urls` suboptions This will help documentation and discovery. Differential Revision: https://phab.mercurial-scm.org/D12435
Mon, 04 Apr 2022 15:35:59 +0200 path: explicitly declare the `bookmarks.mode` suboptions
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 04 Apr 2022 15:35:59 +0200] rev 49035
path: explicitly declare the `bookmarks.mode` suboptions This will help documentation and discovery. Differential Revision: https://phab.mercurial-scm.org/D12434
Mon, 04 Apr 2022 18:05:33 -0700 crecord: avoid duplicating lines when reverting noeol->eol change
Kyle Lippincott <spectral@google.com> [Mon, 04 Apr 2022 18:05:33 -0700] rev 49034
crecord: avoid duplicating lines when reverting noeol->eol change When reversing a patch that looks like this while using crecord: ``` @@ -301,4 +302,4 @@ zza zzb zzc zzd -zze \ No newline at end of file +zze ``` we would previously reverse the `-zze` line to be an add, encounter the "no newline" line and stop inspecting lines. This caused us to duplicate the line, producing `zzezze` (still without a newline). `break` is the correct action if we know there will be no lines afterwards, as would be the case in an eol -> noeol transition. It is incorrect if there are lines afterward, such as if both sides are missing the newline or if only the lhs is missing the newline. Differential Revision: https://phab.mercurial-scm.org/D12441
Tue, 05 Apr 2022 11:09:57 -0700 crecord: add test demonstrating issue when reverting noeol->eol change
Kyle Lippincott <spectral@google.com> [Tue, 05 Apr 2022 11:09:57 -0700] rev 49033
crecord: add test demonstrating issue when reverting noeol->eol change Differential Revision: https://phab.mercurial-scm.org/D12440
Mon, 28 Mar 2022 10:43:10 -0700 revert: ask user to confirm before tracking new file when interactive
Martin von Zweigbergk <martinvonz@google.com> [Mon, 28 Mar 2022 10:43:10 -0700] rev 49032
revert: ask user to confirm before tracking new file when interactive If interactively reverting from a commit with `hg revert -i -r`, we would unconditionally add files from that commit that are not already tracked in the working copy. We have prompts for adding back files removed in the working copy, but that's specific to such files and does not apply to adding files from another revision. Differential Revision: https://phab.mercurial-scm.org/D12416
Mon, 28 Mar 2022 10:43:06 -0700 revert: use a `continue` to reduce indentation
Martin von Zweigbergk <martinvonz@google.com> [Mon, 28 Mar 2022 10:43:06 -0700] rev 49031
revert: use a `continue` to reduce indentation I'm about to add more code in the block I'm modifying here. Differential Revision: https://phab.mercurial-scm.org/D12415
Fri, 25 Mar 2022 08:33:03 -0700 stringutil: try to avoid running `splitlines()` only to get first line
Martin von Zweigbergk <martinvonz@google.com> [Fri, 25 Mar 2022 08:33:03 -0700] rev 49030
stringutil: try to avoid running `splitlines()` only to get first line It's wasteful to call `splitlines()` and only get the first line from it. However, Python doesn't seem to provide a built-in way of doing just one split based on the set of bytes used by `splitlines()`. As a workaround, we do an initial split on just LF and then call `splitlines()` on the result. Thanks to Joerg for this suggestion. I didn't bother to also split on CR, so users with old Mac editors (or repos created by such editors) will not get this performance improvement. Differential Revision: https://phab.mercurial-scm.org/D12413
Thu, 24 Mar 2022 22:05:49 -0700 logcmdutil: use new function for getting first line of string
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 22:05:49 -0700] rev 49029
logcmdutil: use new function for getting first line of string Differential Revision: https://phab.mercurial-scm.org/D12412
Thu, 24 Mar 2022 22:05:36 -0700 filemerge: use new function for getting first line of string
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 22:05:36 -0700] rev 49028
filemerge: use new function for getting first line of string Differential Revision: https://phab.mercurial-scm.org/D12411
Thu, 24 Mar 2022 22:05:27 -0700 absorb: use new function for getting first line of string
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 22:05:27 -0700] rev 49027
absorb: use new function for getting first line of string Differential Revision: https://phab.mercurial-scm.org/D12410
Thu, 24 Mar 2022 22:05:13 -0700 extensions: use new function for getting first line of string
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 22:05:13 -0700] rev 49026
extensions: use new function for getting first line of string Differential Revision: https://phab.mercurial-scm.org/D12409
Thu, 24 Mar 2022 22:04:38 -0700 bookmarks: use new function for getting first line of string
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 22:04:38 -0700] rev 49025
bookmarks: use new function for getting first line of string Differential Revision: https://phab.mercurial-scm.org/D12408
Thu, 24 Mar 2022 20:31:44 -0700 help: use new function for getting first line of string
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 20:31:44 -0700] rev 49024
help: use new function for getting first line of string Differential Revision: https://phab.mercurial-scm.org/D12407
Thu, 24 Mar 2022 16:55:09 -0700 histedit: remove an unnecessary default value of `b''` for commit message
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 16:55:09 -0700] rev 49023
histedit: remove an unnecessary default value of `b''` for commit message I don't think `ctx.description()` is ever anything falsy other than `b''`. I think the comment added in 4c4232e51167 (histedit: extract common summary code into method, 2016-05-27) is mistaken (I don't see any code following that pattern before the function was added). Differential Revision: https://phab.mercurial-scm.org/D12406
Thu, 24 Mar 2022 16:51:20 -0700 histedit: use new function for getting first line of a string
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 16:51:20 -0700] rev 49022
histedit: use new function for getting first line of a string This fixes a crash you can run into if you enter a commit message that's just a "newline-like" byte, like a form feed byte (`hg ci -m \x0f` in Fish). That bug is the motivation for this series. Differential Revision: https://phab.mercurial-scm.org/D12405
Thu, 24 Mar 2022 16:09:12 -0700 templates: extract function to `stringutil` for getting first line of text
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 16:09:12 -0700] rev 49021
templates: extract function to `stringutil` for getting first line of text It's surprisingly hard to get the first line from a string, so let's have our own function in `stringutil` for it. Differential Revision: https://phab.mercurial-scm.org/D12404
Thu, 24 Mar 2022 15:41:29 -0700 templates: make `firstline` filter not keep '\v', '\f' and similar
Martin von Zweigbergk <martinvonz@google.com> [Thu, 24 Mar 2022 15:41:29 -0700] rev 49020
templates: make `firstline` filter not keep '\v', '\f' and similar In b288b4bb8448 (hide some functions behind lambdas, so demandload is useful., 2006-02-28), `x.splitlines(1)[0]` was replaced by `x.splitlines(1)[0].rstrip('\r\n')`, i.e. stripping trailing '\r' and '\n'. Combined with the "truthy" `1` passed to `splitlines()` to get it to keep line endings, that results in e.g. trailing '\v' (Line Tabulation) and '\f' (Form Feed) being preserved. I can't see why one would want that, and I doubt that was the intention; I suspect the author just didn't think to instead remove the `1` argument. Perhaps they thought the 1 being passed there - added by themselves in a7e416bf3c1d (improve templating., 2006-02-27) - was to limit the number of splits to 1 (i.e. thinking about it as `maxsplit=1` rather than `keepends=1`). Differential Revision: https://phab.mercurial-scm.org/D12403
Tue, 22 Mar 2022 11:22:09 -0400 pytype: drop py3.6 support
Matt Harbison <matt_harbison@yahoo.com> [Tue, 22 Mar 2022 11:22:09 -0400] rev 49019
pytype: drop py3.6 support Pytype 2022.01.07 only supports 3.7+. Differential Revision: https://phab.mercurial-scm.org/D12400
Sun, 13 Mar 2022 16:14:34 +0100 perf-util: add a `compare-discovery-case` script
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 13 Mar 2022 16:14:34 +0100] rev 49018
perf-util: add a `compare-discovery-case` script This script run the same discovery case using multiple variants of the algorithm and report differences in behavior, especially regarding the numbers of roundtrip. Differential Revision: https://phab.mercurial-scm.org/D12399
Mon, 14 Mar 2022 05:59:20 +0100 discovery: also audit the number of queries done
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 14 Mar 2022 05:59:20 +0100] rev 49017
discovery: also audit the number of queries done In addition to the number of roundtrip, we now also track the number of queries we perform, this is useful to assert the tradeoff between number of roundtrip and the number of queries. Differential Revision: https://phab.mercurial-scm.org/D12398
Sun, 13 Mar 2022 16:10:53 +0100 search-discovery-case: display more information about the interresting case
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 13 Mar 2022 16:10:53 +0100] rev 49016
search-discovery-case: display more information about the interresting case We display information about the total number of revs and the common/missing numbers. This is useful to spot the interresting case. Differential Revision: https://phab.mercurial-scm.org/D12397
Mon, 21 Mar 2022 20:06:51 +0100 subsetmaker: rework the antichain generation to be usable
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 21 Mar 2022 20:06:51 +0100] rev 49015
subsetmaker: rework the antichain generation to be usable Before this, antichain computation can run for 10s of hours without completion in sight. We use a more direct approach in the computation to keep the computation in complexity in check. With good result. We can now have a full antichain computation on mozilla-try in about one minute. Which is usable. Differential Revision: https://phab.mercurial-scm.org/D12396
Sun, 13 Mar 2022 16:24:01 +0100 subsetmaker: use SortedSet for the scratch variant
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 13 Mar 2022 16:24:01 +0100] rev 49014
subsetmaker: use SortedSet for the scratch variant This provides a massive speedup on wide repository with many heads. For example on mozilla-try, this move from un-usable slow to fairly instant. Differential Revision: https://phab.mercurial-scm.org/D12395
Sun, 13 Mar 2022 15:53:29 +0100 subsetmaker: stabilize the computation of `scratch` subset
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 13 Mar 2022 15:53:29 +0100] rev 49013
subsetmaker: stabilize the computation of `scratch` subset `heads` is set, order of the element are not deterministic and we need to stabilize that if we want to get reproducible results. Differential Revision: https://phab.mercurial-scm.org/D12394
Tue, 20 Jul 2021 15:07:10 +0200 revlog: recommit 49fd21f32695 with a fix for issue6528
Joerg Sonnenberger <joerg@bec.de> [Tue, 20 Jul 2021 15:07:10 +0200] rev 49012
revlog: recommit 49fd21f32695 with a fix for issue6528 `filelog.size` currently special cases two forms of metadata encoding: - copy data via the parent order as flag bit - censor data by peaking into the raw delta All other forms of metadata encoding including the empty metadata block are mishandled. In `basefilectx.cmp` the empty metadata block is explicitly checked to compensate for this. Restore 49fd21f32695, but disable it for filelog, so that the original flag bit use contines to work. Document all this mess for now in preparation of a proper rework. Differential Revision: https://phab.mercurial-scm.org/D11203
Fri, 18 Mar 2022 12:23:47 -0700 merge-lists: make it possible to specify pattern to match
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Mar 2022 12:23:47 -0700] rev 49011
merge-lists: make it possible to specify pattern to match The `merge-lists` tool doesn't know anything about Python other than its regex that attempts to match import lines. Let's make it possible to pass in a custom regex so it's easy to use the tool for e.g. C/C++ `#include` lines or Rust `use` lines (given the limited). Differential Revision: https://phab.mercurial-scm.org/D12392
Fri, 04 Mar 2022 16:12:56 -0800 contrib: add a partial-merge tool for sorted lists (such as Python imports)
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 Mar 2022 16:12:56 -0800] rev 49010
contrib: add a partial-merge tool for sorted lists (such as Python imports) This is a pretty naive tool that uses a regular expression for matching lines. It is based on a Google-internal tool that worked in a similar way. For now, the regular expression is hard-coded to attempt to match single-line Python imports. The only commit I've found in the hg core repo where the tool helped was commit 9cd6292abfdf. I think that's because we often use multiple imports per import statement. I think this tool is still a decent first step (especially once the regex is made configurable in the next patch). The merging should ideally use a proper Python parser and do the merge at the AST (or CST?) level, but that's significantly harder, especially if you want to preserve comments and whitespace. It's also less generic. Differential Revision: https://phab.mercurial-scm.org/D12380
Tue, 05 Apr 2022 17:31:18 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 17:31:18 +0200] rev 49009
branching: merge stable into default
Tue, 05 Apr 2022 17:19:29 +0200 Added signature for changeset 5bd6bcd31dd1 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 17:19:29 +0200] rev 49008
Added signature for changeset 5bd6bcd31dd1
Tue, 05 Apr 2022 17:19:22 +0200 Added tag 6.1.1 for changeset 5bd6bcd31dd1 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 17:19:22 +0200] rev 49007
Added tag 6.1.1 for changeset 5bd6bcd31dd1
Tue, 05 Apr 2022 17:11:36 +0200 relnotes: add notes for 6.1.1 stable 6.1.1
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 17:11:36 +0200] rev 49006
relnotes: add notes for 6.1.1 This also fixes the header for 6.1 from 6.1rc0
Tue, 05 Apr 2022 11:09:03 +0200 merge: stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 11:09:03 +0200] rev 49005
merge: stable into default
Tue, 05 Apr 2022 10:55:28 +0200 rust-hgpath: add `repr(transparent)` to `HgPath` stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 10:55:28 +0200] rev 49004
rust-hgpath: add `repr(transparent)` to `HgPath` It's been stabilized a long time ago, so let's not rely on an implementation detail now. Differential Revision: https://phab.mercurial-scm.org/D12433
Tue, 05 Apr 2022 10:55:28 +0200 rust-dirstatemap: correctly decrement the copies counter stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 10:55:28 +0200] rev 49003
rust-dirstatemap: correctly decrement the copies counter This was caught when writing unit tests for the `DirstateMap`. We were always setting `had_copy_source` to `false` since we erased the value just before. Differential Revision: https://phab.mercurial-scm.org/D12432
Tue, 05 Apr 2022 10:55:28 +0200 rust-dirstatemap: properly decrement counter for tracked descendants stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 10:55:28 +0200] rev 49002
rust-dirstatemap: properly decrement counter for tracked descendants I found this bug when writing unit tests after the fact for the `DirstateMap`. We never decremented the tracked descendants counter since we were always resetting the node data before reading it. This also drops the use of `state`, in favor of the new API to get that information. Differential Revision: https://phab.mercurial-scm.org/D12431
Tue, 05 Apr 2022 10:55:28 +0200 rust-dirstate: panic if the DirstateMap counters go below 0 stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 10:55:28 +0200] rev 49001
rust-dirstate: panic if the DirstateMap counters go below 0 When modifying the API I hit some... interesting errors (trying to allocate 178GB of RAM, for example) because I failed to keep the counters correctly updated. This counter underflow is likely to happen when code is changed around and can have up to eat-your-dirstate level of consequences, which is not nice. The very small runtime cost of checking these counters should really not be an issue and will help us uncover bugs when/if they do appear in the future. Differential Revision: https://phab.mercurial-scm.org/D12430
Tue, 05 Apr 2022 10:55:28 +0200 rust: fix unsound `OwningDirstateMap` stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 10:55:28 +0200] rev 49000
rust: fix unsound `OwningDirstateMap` As per the previous patch, `OwningDirstateMap` is unsound. Self-referential structs are difficult to implement correctly in Rust since the compiler is free to move structs around as much as it wants to. They are also very rarely needed in practice, so the state-of-the-art on how they should be done within the Rust rules is still a bit new. The crate `ouroboros` is an attempt at providing a safe way (in the Rust sense) of declaring self-referential structs. It is getting a lot attention and was improved very quickly when soundness issues were found in the past: rather than relying on our own (limited) review circle, we might as well use the de-facto common crate to fix this problem. This will give us a much better chance of finding issues should any new ones be discovered as well as the benefit of fewer `unsafe` APIs of our own. I was starting to think about how I would present a safe API to the old struct but soon realized that the callback-based approach was already done in `ouroboros`, along with a lot more care towards refusing incorrect structs. In short: we don't return a mutable reference to the `DirstateMap` anymore, we expect users of its API to pass a `FnOnce` that takes the map as an argument. This allows our `OwningDirstateMap` to control the input and output lifetimes of the code that modifies it to prevent such issues. Changing to `ouroboros` meant changing every API with it, but it is relatively low churn in the end. It correctly identified the example buggy modification of `copy_map_insert` outlined in the previous patch as violating the borrow rules. Differential Revision: https://phab.mercurial-scm.org/D12429
Tue, 05 Apr 2022 10:55:27 +0200 rust: explain why the current `OwningDirstateMap` is unsound stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 05 Apr 2022 10:55:27 +0200] rev 48999
rust: explain why the current `OwningDirstateMap` is unsound See inline comments. Differential Revision: https://phab.mercurial-scm.org/D12428
Fri, 01 Apr 2022 12:46:58 -0400 dispatch: fix silly blackbox entries when hg is interrupted stable
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Fri, 01 Apr 2022 12:46:58 -0400] rev 48998
dispatch: fix silly blackbox entries when hg is interrupted When hg is interrupted, it creates ui.log like this: 1970/01/01 00:00:00 user @0000000000000000000000000000000000000000 (62488)> killed! exited 255 after 1.78 seconds This is due to a scoping problem: two different uses of the name "msg" collide. So rename one of them. Differential Revision: https://phab.mercurial-scm.org/D12427
Wed, 30 Mar 2022 00:57:08 -0400 tests: stop excluding the pycompat module from pyflakes
Matt Harbison <matt_harbison@yahoo.com> [Wed, 30 Mar 2022 00:57:08 -0400] rev 48997
tests: stop excluding the pycompat module from pyflakes I assume this was skipped because of all of the py2 stuff causing a lot of spew. The "unused" imports are left in place in case any 3rd party stuff is using it. I don't care about most of it, but TortoiseHg uses `io` and `queue`, so minimally I'd like to keep those. Differential Revision: https://phab.mercurial-scm.org/D12423
Wed, 30 Mar 2022 00:44:55 -0400 tests: drop some py2 specific pyflake failures
Matt Harbison <matt_harbison@yahoo.com> [Wed, 30 Mar 2022 00:44:55 -0400] rev 48996
tests: drop some py2 specific pyflake failures Differential Revision: https://phab.mercurial-scm.org/D12422
Tue, 29 Mar 2022 23:31:37 -0400 util: drop a duplicate import
Matt Harbison <matt_harbison@yahoo.com> [Tue, 29 Mar 2022 23:31:37 -0400] rev 48995
util: drop a duplicate import This was already imported several lines above. Differential Revision: https://phab.mercurial-scm.org/D12421
Tue, 29 Mar 2022 23:34:18 -0400 pycompat: drop the pickle import
Matt Harbison <matt_harbison@yahoo.com> [Tue, 29 Mar 2022 23:34:18 -0400] rev 48994
pycompat: drop the pickle import I suspect this is what df56e6bd37f6 meant to eliminate. Differential Revision: https://phab.mercurial-scm.org/D12420
Tue, 29 Mar 2022 22:22:36 -0400 util: restore the util.pickle symbol
Matt Harbison <matt_harbison@yahoo.com> [Tue, 29 Mar 2022 22:22:36 -0400] rev 48993
util: restore the util.pickle symbol This was accidently dropped in df56e6bd37f6, which started importing pickle directly. That commit explicitly says it will retain it for compatibility with external stuff though. The unused import in pycompat isn't flagged because that module is skipped. Just importing with a comment seemed cleaner than `import X as Y` and then assigning to a `pickle` variable, just to avoid the pyflakes warning. Differential Revision: https://phab.mercurial-scm.org/D12419
Tue, 29 Mar 2022 14:27:45 +0200 merge: stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 29 Mar 2022 14:27:45 +0200] rev 48992
merge: stable into default
Fri, 23 Jul 2021 13:42:12 +0530 precheck: fix false warning about content-divergence creation stable
Sushil khanchi <sushilkhanchi97@gmail.com> [Fri, 23 Jul 2021 13:42:12 +0530] rev 48991
precheck: fix false warning about content-divergence creation Before this patch, if we try to `hg prune` (without any successors) an already obsoleted cset which has at least one successor, it would false warn about new content-divergence. As we know, pruning cset without any successors can not create any divergence. Differential Revision: https://phab.mercurial-scm.org/D12002
Thu, 24 Mar 2022 12:27:21 -0400 streamclone: avoid some obscure error in a corner case stable
Valentin Gatien-Baron <vgatien-baron@janestreet.com> [Thu, 24 Mar 2022 12:27:21 -0400] rev 48990
streamclone: avoid some obscure error in a corner case I don't really know how, but I ran into this error: $ hg clone --stream ssh://user@dummy/empty-repo local-empty-repo streaming all changes abort: unable to apply stream clone: unsupported format: [255] I think you need an empty list of requirements for this to happen, which is weird, but an obscure error like this is not exactly helpful either. Since this is the result of an encoding bug anyway, just fix it. Differential Revision: https://phab.mercurial-scm.org/D12402
Tue, 29 Mar 2022 18:15:49 +0900 tags: fix typo in fast path detection of fnode resolution (issue6673) stable
Yuya Nishihara <yuya@tcha.org> [Tue, 29 Mar 2022 18:15:49 +0900] rev 48989
tags: fix typo in fast path detection of fnode resolution (issue6673) If I understand it, mctx.readfast() is unreliable here if p1/p2 .hgtags nodes differ, and tags on that branch would be randomly discarded depending on which parent were picked. The test case added by this patch would fail only on zstd-compressed repository. I didn't try hard to stabilize the failure case.
Thu, 24 Mar 2022 21:26:45 -0500 completion: install completers to conventional locations
Matthew Martin <phy1729@gmail.com> [Thu, 24 Mar 2022 21:26:45 -0500] rev 48988
completion: install completers to conventional locations Installs the bash and zsh completers to the convential locations so they will automatically be picked up without user intervention. The zsh completer on Debian is still installed to vendor-completions to match their policy. bash: https://github.com/scop/bash-completion#faq zsh: https://github.com/zsh-users/zsh/blob/57305cf245853b8b30895b41a90142dffab97e38/INSTALL#L254 Debian zsh: https://salsa.debian.org/debian/zsh/-/blob/5086b5356abcef8849dc8a09902b7c55f01db3c0/debian/README.Debian#L73
Mon, 28 Mar 2022 17:24:41 +0200 dirstate-cext: properly invalidate mtime and data in `set_untracked` stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 28 Mar 2022 17:24:41 +0200] rev 48987
dirstate-cext: properly invalidate mtime and data in `set_untracked` This was forgotten about in the initial implementation and was revealed while adding the `dirstate-v2` variant of `test-issue660.t`. Neither the existing Python implementation nor the upcoming Rust implementation suffer from this bug since they respectively have `None` and `Option<T>` to represent the lack of information. Differential Revision: https://phab.mercurial-scm.org/D12414
Wed, 23 Mar 2022 13:51:40 -0400 pytype: disable a few errors about Windows specific module attributes
Matt Harbison <matt_harbison@yahoo.com> [Wed, 23 Mar 2022 13:51:40 -0400] rev 48986
pytype: disable a few errors about Windows specific module attributes These were flagged by pytype 2022.03.21. Differential Revision: https://phab.mercurial-scm.org/D12401
Sat, 19 Mar 2022 15:44:38 +0100 rhg: sort unsupported extensions in error message
Raphaël Gomès <rgomes@octobus.net> [Sat, 19 Mar 2022 15:44:38 +0100] rev 48985
rhg: sort unsupported extensions in error message This caused some flakiness in test output, and is also just better for users. Differential Revision: https://phab.mercurial-scm.org/D12389
Sun, 13 Mar 2022 15:48:18 +0100 hgignore: ignore .testtimes in more location
Pierre-Yves David <pierre-yves.david@octobus.net> [Sun, 13 Mar 2022 15:48:18 +0100] rev 48984
hgignore: ignore .testtimes in more location See the inline comment. Differential Revision: https://phab.mercurial-scm.org/D12393
Fri, 25 Mar 2022 11:33:12 -0400 merge: with stable
Augie Fackler <augie@google.com> [Fri, 25 Mar 2022 11:33:12 -0400] rev 48983
merge: with stable
Thu, 17 Mar 2022 11:19:06 -0700 partial-merge: add support for `.args` config (`$local` etc.)
Martin von Zweigbergk <martinvonz@google.com> [Thu, 17 Mar 2022 11:19:06 -0700] rev 48982
partial-merge: add support for `.args` config (`$local` etc.) It will be useful to be able to define custom command-line arguments per partial merge tool just like we have for regular merge tools. In particular, I expect the same binary to handle multiple languages, so it will be useful to be able to pass some argument indicating the language, or perhaps simply an argument defining a regex that's used for finding lines to merge as a sorted set. Differential Revision: https://phab.mercurial-scm.org/D12383
Tue, 18 Jan 2022 13:05:21 -0800 filemerge: add support for partial conflict resolution by external tool
Martin von Zweigbergk <martinvonz@google.com> [Tue, 18 Jan 2022 13:05:21 -0800] rev 48981
filemerge: add support for partial conflict resolution by external tool A common class of merge conflicts is in imports/#includes/etc. It's relatively easy to write a tool that can resolve these conflicts, perhaps by naively just unioning the statements and leaving any cleanup to other tools to do later [1]. Such specialized tools cannot generally resolve all conflicts in a file, of course. Let's therefore call them "partial merge tools". Note that the internal simplemerge algorithm is such a partial merge tool - one that only resolves trivial "conflicts" where one side is unchanged or both sides change in the same way. One can also imagine having smarter language-aware partial tools that merge the AST. It may be useful for such tools to interactively let the user resolve any conflicts it can't resolve itself. However, having the option of implementing it as a partial merge tool means that the developer doesn't *need* to create a UI for it. Instead, the user can resolve any remaining conflicts with their regular merge tool (e.g. `:merge3` or `meld). We don't currently have a way to let the user define such partial merge tools. That's what this patch addresses. It lets the user configure partial merge tools to run. Each tool can be configured to run only on files matching certain patterns (e.g. "*.py"). The tool takes three inputs (local, base, other) and resolves conflicts by updating these in place. For example, let's say the inputs are these: base: ``` import sys def main(): print('Hello') ``` local: ``` import os import sys def main(): print('Hi') ``` other: ``` import re import sys def main(): print('Howdy') ``` A partial merge tool could now resolve the conflicting imports by replacing the import statements in *all* files by the following snippet, while leaving the remainder of the files unchanged. ``` import os import re import sys ``` As a result, simplemerge and any regular merge tool that runs after the partial merge tool(s) will consider the imports to be non-conflicting and will only present the conflict in `main()` to the user. Differential Revision: https://phab.mercurial-scm.org/D12356
Tue, 22 Mar 2022 03:19:01 +0100 pullbundle: fix file name in the help text stable
Joerg Sonnenberger <joerg@bec.de> [Tue, 22 Mar 2022 03:19:01 +0100] rev 48980
pullbundle: fix file name in the help text It is pullbundles.manifest and not pullbundle.manifest. Differential Revision: https://phab.mercurial-scm.org/D12391
Mon, 21 Mar 2022 14:21:10 -0700 unamend: abort if commit was not created by `hg [un]amend` stable
Martin von Zweigbergk <martinvonz@google.com> [Mon, 21 Mar 2022 14:21:10 -0700] rev 48979
unamend: abort if commit was not created by `hg [un]amend` `hg unamend` can currently undo any kind of rewrite, as long as it has an obsmarker. However, that has quite unexpected results if you run it after e.g. `hg rebase` (expecting it to behave like a generic `hg undo` command), because it updates to the predecessor and leaves the old changes in the working copy. I think it's better to allow `hg unamend` only after `hg amend` (and after `hg unamend` because that's documented as being supported). Differential Revision: https://phab.mercurial-scm.org/D12390
Mon, 21 Mar 2022 10:55:50 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 21 Mar 2022 10:55:50 +0100] rev 48978
branching: merge stable into default
Thu, 17 Mar 2022 14:58:46 +0100 test: use `wait-on-file` in `test-racy-mutations.t` stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 17 Mar 2022 14:58:46 +0100] rev 48977
test: use `wait-on-file` in `test-racy-mutations.t` The official utility scale its timeout with the run-tests.py one. So lets use it. Differential Revision: https://phab.mercurial-scm.org/D12382
Fri, 18 Mar 2022 21:15:54 -0700 amend: fix amend with copies in extras stable
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Mar 2022 21:15:54 -0700] rev 48976
amend: fix amend with copies in extras If copy information is stored only in the commit extras and not in filelogs, then they get lost on amend if the file wasn't also modified in the working copy. That's because we create `filectx` object from the old commit in those cases, and the `.copysource()` of such objects read only from the filelog. This patch fixes it by always creating a new `memfilectx` in these cases, passing the calculated copy information to it. Differential Revision: https://phab.mercurial-scm.org/D12387
Fri, 18 Mar 2022 21:37:22 -0700 tests: demonstrate that copy info in changeset gets lost on amend stable
Martin von Zweigbergk <martinvonz@google.com> [Fri, 18 Mar 2022 21:37:22 -0700] rev 48975
tests: demonstrate that copy info in changeset gets lost on amend When copy information is stored in changesets, it gets lost on amend. We didn't notice that until now because our users at Google have the config set to `compatibility`, which means copy information is stored in both changeset and filelogs. Differential Revision: https://phab.mercurial-scm.org/D12386
Fri, 18 Mar 2022 18:09:46 +0100 ci: use the `v1.0` flavor of the docker images in the CI stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 18 Mar 2022 18:09:46 +0100] rev 48974
ci: use the `v1.0` flavor of the docker images in the CI This new versioning will help us to maintain backward compatibility in the docker image. This will be useful to deal with mismatch between default/stable in version and the re-run CI on older changesets in the future. Once this changeset land on stable, we will have to merge it in default. Then we can start make backward incompatible changes in a new image version. Differential Revision: https://phab.mercurial-scm.org/D12388
Fri, 18 Mar 2022 16:15:44 +0100 rust-status: cap the number of concurrent threads to 16 stable
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Mar 2022 16:15:44 +0100] rev 48973
rust-status: cap the number of concurrent threads to 16 During benchmarking it was determined that the use of more threads is very advantageous... until we use more than 16. This is most likely due to some resource contention (thrashing, etc.). Until we have time to figure out and fix the underlying cause, let's just cap at 16 threads. Differential Revision: https://phab.mercurial-scm.org/D12384
Fri, 18 Mar 2022 17:39:06 +0100 rhg: add support for ignoring all extensions
Raphaël Gomès <rgomes@octobus.net> [Fri, 18 Mar 2022 17:39:06 +0100] rev 48972
rhg: add support for ignoring all extensions Some workflows just want what `rhg` does and don't care about any extensions, this makes it easier. Differential Revision: https://phab.mercurial-scm.org/D12385
Thu, 17 Mar 2022 12:27:40 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Thu, 17 Mar 2022 12:27:40 +0100] rev 48971
branching: merge stable into default
Tue, 15 Mar 2022 10:36:28 +0100 revlog: fix index_fast_rank (wip)
Julien Cristau <jcristau@debian.org> [Tue, 15 Mar 2022 10:36:28 +0100] rev 48970
revlog: fix index_fast_rank (wip) As far as I can tell, rank is stored as a 32-bit big endian value, I'm not sure how grabbing the first byte can possibly work. I assume there's no test coverage here? cc @pacien Fixes: https://www.mercurial-scm.org/repo/hg/rev/e633e660158f Differential Revision: https://phab.mercurial-scm.org/D12376
Thu, 17 Mar 2022 11:00:05 +0100 tests: fix glob pattern for dynamic timer alignment
pacien <pacien.trangirard@pacien.net> [Thu, 17 Mar 2022 11:00:05 +0100] rev 48969
tests: fix glob pattern for dynamic timer alignment The number of space characters varies depending on the number of digits of the timer, making some tests fail on slow machines in an unintended way: ```diff --- /build/mercurial-6.1/tests/test-merge-halt.t +++ /build/mercurial-6.1/tests/test-merge-halt.t.err @@ -210,6 +210,6 @@ merge halted after failed merge (see hg resolve) [240] $ hg shelve --list - default (* ago) changes to: foo (glob) + default (11s ago) changes to: foo $ hg unshelve --abort unshelve of 'default' aborted ERROR: test-merge-halt.t output changed ``` Differential Revision: https://phab.mercurial-scm.org/D12381
Tue, 15 Mar 2022 14:45:47 +0100 test: update test-clone-stream.t to pass on bigendian stable
Julien Cristau <jcristau@debian.org> [Tue, 15 Mar 2022 14:45:47 +0100] rev 48968
test: update test-clone-stream.t to pass on bigendian Fixes: a3cf460a6b1b ("stream-clone: also filter the requirement we put in the bundle 2") Differential Revision: https://phab.mercurial-scm.org/D12377
Tue, 15 Mar 2022 13:31:39 -0700 filemerge: when merge tool uses $output, don't leave markers in $local stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Mar 2022 13:31:39 -0700] rev 48967
filemerge: when merge tool uses $output, don't leave markers in $local As explained in the previous patch, we incorrectly leave conflict markers in both `$local` and `$output` since D12190. I don't understand why it broke but the fix is simple and clear after all the recent refactoring. Differential Revision: https://phab.mercurial-scm.org/D12379
Tue, 15 Mar 2022 13:40:45 -0700 tests: demonstrate how conflict markers end up $local *and* $output stable
Martin von Zweigbergk <martinvonz@google.com> [Tue, 15 Mar 2022 13:40:45 -0700] rev 48966
tests: demonstrate how conflict markers end up $local *and* $output When a merge tool is configured to keep conflict markers, they are supposed to be written to `$local` if `$output` is not mentioned in the tool's `merge-tools.<tool>.args` config, and in `$output` if it is mentioned. However, I broke the latter case in D12190. Differential Revision: https://phab.mercurial-scm.org/D12378
Tue, 15 Mar 2022 09:26:26 +0100 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Tue, 15 Mar 2022 09:26:26 +0100] rev 48965
branching: merge stable into default
Mon, 14 Mar 2022 17:57:03 +0100 revlog: fix wrong type of rank_unknown variable stable
Julien Cristau <jcristau@debian.org> [Mon, 14 Mar 2022 17:57:03 +0100] rev 48964
revlog: fix wrong type of rank_unknown variable We treat "rank" as an int everywhere, but declare rank_unknown as a char. On architectures where char is signed, that works out ok, but when char is unsigned, rank_unknown is 255 instead of -1. Differential Revision: https://phab.mercurial-scm.org/D12374
Mon, 14 Mar 2022 12:24:34 -0700 tests: fix formatting issue in run-tests.py after c194e93d1ebc
Kyle Lippincott <spectral@google.com> [Mon, 14 Mar 2022 12:24:34 -0700] rev 48963
tests: fix formatting issue in run-tests.py after c194e93d1ebc Differential Revision: https://phab.mercurial-scm.org/D12375
Mon, 14 Mar 2022 14:10:41 +0000 rust-hg-core: use correct type for libc hostname buffer stable
Luke Granger-Brown <hg@lukegb.com> [Mon, 14 Mar 2022 14:10:41 +0000] rev 48962
rust-hg-core: use correct type for libc hostname buffer The type of libc::c_char is u8 on aarch64 rather than i8, which causes the use of a specifically-typed constant to fail. Differential Revision: https://phab.mercurial-scm.org/D12373
Wed, 09 Mar 2022 15:41:39 -0800 import-checker: allow symbol imports from typing module
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 09 Mar 2022 15:41:39 -0800] rev 48961
import-checker: allow symbol imports from typing module As we add typing annotations, we'll want to use a lot of symbols from the `typing` module. Typing `typing` all the time will be annoying. Let's allow symbol imports from this module. While I was here, I changed some comments from "whitelist" to "allow list" as the former is non-inclusive terminology. Differential Revision: https://phab.mercurial-scm.org/D12365
Tue, 08 Mar 2022 19:11:03 -0800 pycompat: remove json.loads polyfill for Python 3.5
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:11:03 -0800] rev 48960
pycompat: remove json.loads polyfill for Python 3.5 We no longer support Python 3.5 so this can be deleted. Differential Revision: https://phab.mercurial-scm.org/D12364
Tue, 08 Mar 2022 19:10:19 -0800 pycompat: remove check for Python >= 3.6
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:10:19 -0800] rev 48959
pycompat: remove check for Python >= 3.6 We dropped support for Python 3.5 so this is always true. Differential Revision: https://phab.mercurial-scm.org/D12363
Tue, 08 Mar 2022 19:09:35 -0800 hgdemandimport: delete check for Python 3.5
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:09:35 -0800] rev 48958
hgdemandimport: delete check for Python 3.5 We dropped support for Python 3.5. So we no longer need to do this. Differential Revision: https://phab.mercurial-scm.org/D12362
Tue, 08 Mar 2022 19:08:35 -0800 hg: always import hgdemandimport
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 19:08:35 -0800] rev 48957
hg: always import hgdemandimport The deleted if condition is always true now that we dropped Python 2 and 3.5. Differential Revision: https://phab.mercurial-scm.org/D12361
Wed, 09 Mar 2022 21:26:58 -0800 tests: support another error case when detecting ipv4/ipv6 support
Kyle Lippincott <spectral@google.com> [Wed, 09 Mar 2022 21:26:58 -0800] rev 48956
tests: support another error case when detecting ipv4/ipv6 support I encountered this on Linux in a VM environment with a rather strange networking setup (both on the host and in the VM). Differential Revision: https://phab.mercurial-scm.org/D12371
Wed, 09 Mar 2022 16:44:48 +0100 debugdiscovery: fix a typo in the help
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 09 Mar 2022 16:44:48 +0100] rev 48955
debugdiscovery: fix a typo in the help Differential Revision: https://phab.mercurial-scm.org/D12372
Wed, 09 Mar 2022 11:28:51 +0100 rust-hg-cypython: upgrade dependencies
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:28:51 +0100] rev 48954
rust-hg-cypython: upgrade dependencies This upgrades all dependencies to their latest version. This is routinely done to keep-up. Differential Revision: https://phab.mercurial-scm.org/D12359
Wed, 09 Mar 2022 11:22:22 +0100 rust-hg-core: upgrade dependencies
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:22:22 +0100] rev 48953
rust-hg-core: upgrade dependencies This upgrades all dependencies to their latest version, except `clap` and `zstd` whose latest versions do not support our minimum supported Rust version 1.48.0. Same as for `rhg`, it contains security fix for `regex` which does not affect us too much, but doesn't hurt, and the rest of the upgrades are there simply to keep up. Differential Revision: https://phab.mercurial-scm.org/D12358
Wed, 09 Mar 2022 11:17:09 +0100 rhg: upgrade dependencies
Raphaël Gomès <rgomes@octobus.net> [Wed, 09 Mar 2022 11:17:09 +0100] rev 48952
rhg: upgrade dependencies This upgrades all dependencies to their latest version, except `clap`, which is upgraded to the last 2.x series version, since 3.x does not support our minimum supported Rust version of 1.48.0. This contains a security fix for `regex` which does not affect us too much, but doesn't hurt, and the rest of the upgrades are there simply to keep up. Differential Revision: https://phab.mercurial-scm.org/D12357
Fri, 04 Mar 2022 10:28:46 +0900 chgserver: remove Python 2 file descriptor logic
Yuya Nishihara <yuya@tcha.org> [Fri, 04 Mar 2022 10:28:46 +0900] rev 48951
chgserver: remove Python 2 file descriptor logic Follows up 0bb28b7736bc "chgserver: remove Python 2 support code." On Python 2, we had to close newfp prior to restoring the original file description since "delete newfp" would otherwise close the file descriptor shared with the long-lived fp: in attachio(): newfp = os.fdopen(fp.fileno(), mode, bufsize) in _restoreio(): newfp.close() # temporarily close newfp.fileno() (= fp.fileno()) os.dup2(fd, fp.fileno()) # reopen fp.fileno() with original fd On the other hand, we shouldn't call newfp.close() on Python 3 since any function calls are proxied to the underlying file object by procutil.LineBufferedWrapper.
Tue, 08 Feb 2022 15:51:52 +0100 dirstate-tree: optimize HashMap lookups with raw_entry_mut
Simon Sapin <simon.sapin@octobus.net> [Tue, 08 Feb 2022 15:51:52 +0100] rev 48950
dirstate-tree: optimize HashMap lookups with raw_entry_mut This switches to using `HashMap` from the hashbrown crate, in order to use its `raw_entry_mut` method. The standard library’s `HashMap` is also based on this same crate, but `raw_entry_mut` is not yet stable there: https://github.com/rust-lang/rust/issues/56167 Using version 0.9 because 0.10 is yanked and 0.11 requires Rust 1.49 This replaces in `DirstateMap::get_or_insert_node` a call to `HashMap<K, V>::entry` with `K = WithBasename<Cow<'on_disk, HgPath>>`. `entry` takes and consumes an "owned" `key: K` parameter, in case a new entry ends up inserted. This key is converted by `to_cow` from a value that borrows the `'path` lifetime. When this function is called by `Dirstate::new_v1`, `'path` is in fact the same as `'on_disk` so `to_cow` can return an owned key that contains `Cow::Borrowed`. For other callers, `to_cow` needs to create a `Cow::Owned` and thus make a costly heap memory allocation. This is wasteful if this key was already present in the map. Even when inserting a new node this is typically the case for its ancestor nodes (assuming most directories have numerous descendants). Differential Revision: https://phab.mercurial-scm.org/D12317
Fri, 04 Mar 2022 13:33:55 +0100 heptapod-ci: remove useless mentions of Python 3
Raphaël Gomès <rgomes@octobus.net> [Fri, 04 Mar 2022 13:33:55 +0100] rev 48949
heptapod-ci: remove useless mentions of Python 3 Now that we don't have Python 2 jobs, we can go with shorter names. Differential Revision: https://phab.mercurial-scm.org/D12354
Fri, 04 Mar 2022 13:01:13 -0800 revlog: remove unused `rank` variable from D12209
Martin von Zweigbergk <martinvonz@google.com> [Fri, 04 Mar 2022 13:01:13 -0800] rev 48948
revlog: remove unused `rank` variable from D12209 Differential Revision: https://phab.mercurial-scm.org/D12355
Mon, 21 Feb 2022 13:10:22 -0700 demandimport: delete demandimportpy2 module
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 13:10:22 -0700] rev 48947
demandimport: delete demandimportpy2 module We no longer support Python 2. Differential Revision: https://phab.mercurial-scm.org/D12353
Mon, 21 Feb 2022 13:08:28 -0700 py3: use class X: instead of class X(object):
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 13:08:28 -0700] rev 48946
py3: use class X: instead of class X(object): The inheritance from object is implied in Python 3. So this should be equivalent. This change was generated via an automated search and replace. So there may have been some accidental changes. Differential Revision: https://phab.mercurial-scm.org/D12352
Mon, 21 Feb 2022 13:03:43 -0700 check-code: remove ban on old-style classes
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 13:03:43 -0700] rev 48945
check-code: remove ban on old-style classes In Python 3, `class foo:` is equivalent to `class foo(object):`. So we can allow the former form now. Differential Revision: https://phab.mercurial-scm.org/D12351
Mon, 21 Feb 2022 12:46:27 -0700 tests: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:46:27 -0700] rev 48944
tests: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12350
Mon, 21 Feb 2022 12:44:41 -0700 tests: remove Python < 3 check
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:44:41 -0700] rev 48943
tests: remove Python < 3 check We require Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D12349
Tue, 01 Mar 2022 20:53:52 -0800 cborutil: remove Python 2 definition of _elementtointeger()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:53:52 -0800] rev 48942
cborutil: remove Python 2 definition of _elementtointeger() Differential Revision: https://phab.mercurial-scm.org/D12348
Mon, 21 Feb 2022 12:42:48 -0700 py3: stop using util.iterfile()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:42:48 -0700] rev 48941
py3: stop using util.iterfile() The Python 3 implementation is a no-op. So this is equivalent. We still keep util.iterfile() around for backwards API compatibility to help the Python 3 migration. It can be deleted in a future release. Differential Revision: https://phab.mercurial-scm.org/D12347
Thu, 03 Mar 2022 07:56:47 -0800 util: remove iterfile() variant for buggy EINTR handling
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 07:56:47 -0800] rev 48940
util: remove iterfile() variant for buggy EINTR handling The workaround for Python 2 is no longer needed. So we can delete some code. Differential Revision: https://phab.mercurial-scm.org/D12346
Mon, 21 Feb 2022 12:36:57 -0700 statprof: remove superfluous sys.version_info check
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:36:57 -0700] rev 48939
statprof: remove superfluous sys.version_info check Always true since we require Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D12345
Mon, 21 Feb 2022 12:36:04 -0700 policy: remove Python 2.7 compatibility code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:36:04 -0700] rev 48938
policy: remove Python 2.7 compatibility code Differential Revision: https://phab.mercurial-scm.org/D12344
Mon, 21 Feb 2022 12:35:29 -0700 lsprof: remove some Python 2.7 compatibility code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:35:29 -0700] rev 48937
lsprof: remove some Python 2.7 compatibility code Differential Revision: https://phab.mercurial-scm.org/D12343
Mon, 21 Feb 2022 12:34:22 -0700 url: remove Python 2.7 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 12:34:22 -0700] rev 48936
url: remove Python 2.7 support code Differential Revision: https://phab.mercurial-scm.org/D12342
Tue, 01 Mar 2022 20:52:32 -0800 py3: replace pycompat.itervalues(x) with x.values()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:52:32 -0800] rev 48935
py3: replace pycompat.itervalues(x) with x.values() pycompat.itervalues(x) just calls x.values(). So this is equivalent. The rewrite was perfomed via an automated search and replace. Differential Revision: https://phab.mercurial-scm.org/D12341
Mon, 21 Feb 2022 11:24:57 -0700 py3: use str instead of pycompat.unicode
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:24:57 -0700] rev 48934
py3: use str instead of pycompat.unicode pycompat.unicode is an alias to str. Differential Revision: https://phab.mercurial-scm.org/D12340
Tue, 08 Mar 2022 10:58:22 +0100 ui: use input() directly
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 08 Mar 2022 10:58:22 +0100] rev 48933
ui: use input() directly pycompat.rawinput() is an alias to input() Differential Revision: https://phab.mercurial-scm.org/D12339
Tue, 01 Mar 2022 20:50:34 -0800 py3: use int instead of pycompat.long
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:50:34 -0800] rev 48932
py3: use int instead of pycompat.long pycompat.long is aliased to int. So this should have no change in functionality. Differential Revision: https://phab.mercurial-scm.org/D12338
Mon, 21 Feb 2022 11:13:37 -0700 verify: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:13:37 -0700] rev 48931
verify: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12336
Mon, 21 Feb 2022 11:13:15 -0700 templatekw: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:13:15 -0700] rev 48930
templatekw: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12335
Mon, 21 Feb 2022 11:12:47 -0700 templatefuncs: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:12:47 -0700] rev 48929
templatefuncs: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12334
Mon, 21 Feb 2022 11:12:26 -0700 revlog: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:12:26 -0700] rev 48928
revlog: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12333
Mon, 21 Feb 2022 11:11:59 -0700 merge: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:11:59 -0700] rev 48927
merge: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12332
Mon, 21 Feb 2022 11:11:27 -0700 manifest: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:11:27 -0700] rev 48926
manifest: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12331
Mon, 21 Feb 2022 11:10:47 -0700 localrepo: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:10:47 -0700] rev 48925
localrepo: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12330
Mon, 21 Feb 2022 11:10:27 -0700 keepalive: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:10:27 -0700] rev 48924
keepalive: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12329
Mon, 21 Feb 2022 11:10:08 -0700 help: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:10:08 -0700] rev 48923
help: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12328
Mon, 21 Feb 2022 11:09:30 -0700 dirstate: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:09:30 -0700] rev 48922
dirstate: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12327
Mon, 21 Feb 2022 11:08:53 -0700 debugcommands: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:08:53 -0700] rev 48921
debugcommands: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12326
Tue, 01 Mar 2022 20:47:37 -0800 config: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:47:37 -0800] rev 48920
config: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12325
Mon, 21 Feb 2022 11:08:04 -0700 commands: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:08:04 -0700] rev 48919
commands: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12324
Mon, 21 Feb 2022 11:07:29 -0700 remotefilelog: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:07:29 -0700] rev 48918
remotefilelog: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12323
Mon, 21 Feb 2022 11:06:46 -0700 lfs: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:06:46 -0700] rev 48917
lfs: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12322
Tue, 01 Mar 2022 20:46:06 -0800 largefiles: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:46:06 -0800] rev 48916
largefiles: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12321
Mon, 21 Feb 2022 11:05:42 -0700 infinitepush: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 11:05:42 -0700] rev 48915
infinitepush: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12320
Tue, 01 Mar 2022 20:44:59 -0800 convert: remove pycompat.iteritems()
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:44:59 -0800] rev 48914
convert: remove pycompat.iteritems() Differential Revision: https://phab.mercurial-scm.org/D12319
Thu, 03 Mar 2022 18:28:30 -0800 global: bulk replace simple pycompat.iteritems(x) with x.items()
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 18:28:30 -0800] rev 48913
global: bulk replace simple pycompat.iteritems(x) with x.items() pycompat.iteritems() just calls .items(). This commit applies a regular expression search and replace to convert simple instances of pycompat.iteritems() with .items(). There are still a handful of calls to pycompat.iteritems() remaining. But these all have more complicated expressions that I wasn't comfortable performing an automated replace on. In addition, some simple replacements were withheld because they broke pytype. These will be handled by their own changesets. Differential Revision: https://phab.mercurial-scm.org/D12318
Thu, 03 Mar 2022 17:39:20 -0800 worker: silence type error when calling pickle
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 17:39:20 -0800] rev 48912
worker: silence type error when calling pickle pytype is complaining that the argument to `pickle.load()` is not an `IO`. pytype isn't wrong: `_blockingreader` doesn't implement `io.RawIOBase`, only `read()` and `readline()`. But it appears this is enough for pickle. So we silence the false positive. This fixes a regression introduced by D12304 / cc0e059d2af8: worker: remove Python 2 support code. Differential Revision: https://phab.mercurial-scm.org/D12337
Mon, 21 Feb 2022 10:53:09 -0700 stringutil: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:53:09 -0700] rev 48911
stringutil: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12314
Mon, 21 Feb 2022 10:52:27 -0700 procutil: delete Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:52:27 -0700] rev 48910
procutil: delete Python 2 support code This entailed deleting a function for Python 2 support and renaming the Python 3 function to match the exported symbol name. Differential Revision: https://phab.mercurial-scm.org/D12313
Tue, 01 Mar 2022 20:37:09 -0800 revlogutils: unconditionally pass version to random seed
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:37:09 -0800] rev 48909
revlogutils: unconditionally pass version to random seed Differential Revision: https://phab.mercurial-scm.org/D12312
Mon, 21 Feb 2022 10:48:45 -0700 revlogutils: remove Python 2 variant for iter_seed
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:48:45 -0700] rev 48908
revlogutils: remove Python 2 variant for iter_seed Differential Revision: https://phab.mercurial-scm.org/D12311
Mon, 21 Feb 2022 10:47:31 -0700 charencode: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:47:31 -0700] rev 48907
charencode: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12310
Mon, 21 Feb 2022 10:47:08 -0700 hgweb: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:47:08 -0700] rev 48906
hgweb: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12309
Thu, 03 Mar 2022 08:06:37 -0800 hgweb: remove Python 3 conditional
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 08:06:37 -0800] rev 48905
hgweb: remove Python 3 conditional We probably have a better tobytes() implementation somewhere in pycompat. But I don't want to bloat scope of this commit. Differential Revision: https://phab.mercurial-scm.org/D12308
Mon, 21 Feb 2022 10:45:24 -0700 hgweb: simplify uenv assignment
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:45:24 -0700] rev 48904
hgweb: simplify uenv assignment We don't need the Python 3 conditional. We can call items() directly since we're on Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D12307
Mon, 21 Feb 2022 10:43:58 -0700 chgserver: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:43:58 -0700] rev 48903
chgserver: remove Python 2 support code The logic here is more complicated than most Python 2/3 support code. But the rewritten logic should be identical. Differential Revision: https://phab.mercurial-scm.org/D12306
Mon, 21 Feb 2022 10:40:58 -0700 chgserver: remove Python 2 branch
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:40:58 -0700] rev 48902
chgserver: remove Python 2 branch Differential Revision: https://phab.mercurial-scm.org/D12305
Mon, 21 Feb 2022 10:39:48 -0700 worker: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:39:48 -0700] rev 48901
worker: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12304
Mon, 21 Feb 2022 10:39:09 -0700 wireprotoframing: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:39:09 -0700] rev 48900
wireprotoframing: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12303
Mon, 21 Feb 2022 10:38:27 -0700 windows: remove write throttling support
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:38:27 -0700] rev 48899
windows: remove write throttling support This mode would only be active on Python 2, which is no longer supported. Differential Revision: https://phab.mercurial-scm.org/D12302
Mon, 21 Feb 2022 10:36:44 -0700 windows: remove conditional for Python 3
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:36:44 -0700] rev 48898
windows: remove conditional for Python 3 Differential Revision: https://phab.mercurial-scm.org/D12301
Mon, 21 Feb 2022 10:35:42 -0700 util: remove superfluous ispy3 test
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:35:42 -0700] rev 48897
util: remove superfluous ispy3 test Differential Revision: https://phab.mercurial-scm.org/D12300
Mon, 21 Feb 2022 10:35:20 -0700 urllibcompat: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:35:20 -0700] rev 48896
urllibcompat: remove Python 2 support code We had to move the `import` statements to appease the import checker. This whole module could probably be deleted as its point in life is to pave over Python 2/3 differences. But that's for a different commit. Differential Revision: https://phab.mercurial-scm.org/D12299
Mon, 21 Feb 2022 10:32:45 -0700 keepalive: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:32:45 -0700] rev 48895
keepalive: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12298
Mon, 21 Feb 2022 10:31:53 -0700 extensions: remove superfluous pycompat.ispy3 check
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:31:53 -0700] rev 48894
extensions: remove superfluous pycompat.ispy3 check This is always True now. Differential Revision: https://phab.mercurial-scm.org/D12297
Mon, 21 Feb 2022 10:31:00 -0700 archival: remove check for Python 2
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:31:00 -0700] rev 48893
archival: remove check for Python 2 Differential Revision: https://phab.mercurial-scm.org/D12296
Thu, 03 Mar 2022 07:58:29 -0800 encoding: remove Python 2 support code
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 07:58:29 -0800] rev 48892
encoding: remove Python 2 support code Differential Revision: https://phab.mercurial-scm.org/D12295
Mon, 21 Feb 2022 10:28:19 -0700 dispatch: remove Python 2 function variants
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:28:19 -0700] rev 48891
dispatch: remove Python 2 function variants Differential Revision: https://phab.mercurial-scm.org/D12294
Mon, 21 Feb 2022 10:27:34 -0700 config: remove conditional asserts
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:27:34 -0700] rev 48890
config: remove conditional asserts We always run on Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D12293
Mon, 21 Feb 2022 10:27:02 -0700 error: unconditionally define __str__
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:27:02 -0700] rev 48889
error: unconditionally define __str__ We always run on Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D12292
Mon, 21 Feb 2022 10:26:25 -0700 formatter: remove conditional assert
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:26:25 -0700] rev 48888
formatter: remove conditional assert We always run on Python 3 now. Differential Revision: https://phab.mercurial-scm.org/D12291
Mon, 21 Feb 2022 10:25:53 -0700 httppeer: inline simplified _reqdata()
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:25:53 -0700] rev 48887
httppeer: inline simplified _reqdata() The function can be reduced to an attribute lookup on Python 3. So inline it. Differential Revision: https://phab.mercurial-scm.org/D12290
Mon, 21 Feb 2022 10:23:54 -0700 url: remove passing of strict
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:23:54 -0700] rev 48886
url: remove passing of strict This was needed to support Python 2.7. Differential Revision: https://phab.mercurial-scm.org/D12289
Thu, 03 Mar 2022 08:04:33 -0800 posix: delete Python 2 posixfile()
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 08:04:33 -0800] rev 48885
posix: delete Python 2 posixfile() The comment no longer makes sense since the stdlib open() behaves the way we want on Python 3. So it was removed. Differential Revision: https://phab.mercurial-scm.org/D12288
Mon, 21 Feb 2022 10:21:18 -0700 match: delete Python 2 conditional code
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:21:18 -0700] rev 48884
match: delete Python 2 conditional code Differential Revision: https://phab.mercurial-scm.org/D12287
Mon, 21 Feb 2022 10:20:48 -0700 mail: delete conditional code for Python 2
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:20:48 -0700] rev 48883
mail: delete conditional code for Python 2 Differential Revision: https://phab.mercurial-scm.org/D12286
Sun, 20 Feb 2022 16:46:05 -0700 archival: remove GzipFileWithTime
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 16:46:05 -0700] rev 48882
archival: remove GzipFileWithTime This was required for Python 2 support, which we no longer need to support. Differential Revision: https://phab.mercurial-scm.org/D12285
Mon, 21 Feb 2022 10:56:31 -0700 check-code: allow importing Python 3 modules
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 21 Feb 2022 10:56:31 -0700] rev 48881
check-code: allow importing Python 3 modules Now that we no longer support Python 2, we should be able to import and use the Python 3 only modules in our code. So remove a lint banning this. Differential Revision: https://phab.mercurial-scm.org/D12284
Wed, 02 Mar 2022 08:29:52 -0700 tests: move Python 3.5 check higher in file
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 02 Mar 2022 08:29:52 -0700] rev 48880
tests: move Python 3.5 check higher in file Per code review comment on the changeset that introduced the Python 3.5+ checks. Differential Revision: https://phab.mercurial-scm.org/D12259
Sun, 20 Feb 2022 15:35:09 -0700 py2: drop some more from __future__ statements
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:35:09 -0700] rev 48879
py2: drop some more from __future__ statements These are no longer needed after dropping support for Python 2. Differential Revision: https://phab.mercurial-scm.org/D12258
Sun, 20 Feb 2022 15:31:33 -0700 tests: delete some no-py3 blocks
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:31:33 -0700] rev 48878
tests: delete some no-py3 blocks And drop some nearby avoidable py3 checks in close proximity while we are here. Differential Revision: https://phab.mercurial-scm.org/D12257
Sun, 20 Feb 2022 16:42:58 -0700 tests: remove __future__ import from test-debugcommands.t
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 16:42:58 -0700] rev 48877
tests: remove __future__ import from test-debugcommands.t This one is slightly more involved since it affects test output. Differential Revision: https://phab.mercurial-scm.org/D12256
Sun, 20 Feb 2022 15:28:44 -0700 tests: remove from __future__ from inline Python in tests
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:28:44 -0700] rev 48876
tests: remove from __future__ from inline Python in tests This is no longer required since we require Python 3 and the linter no longer requires these statements. Differential Revision: https://phab.mercurial-scm.org/D12255
Thu, 03 Mar 2022 17:34:00 +0100 py2: remove simple from __future__ statements
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 17:34:00 +0100] rev 48875
py2: remove simple from __future__ statements These were needed for Python 2 support. Now that our linter no longer mandates these, we can start deleting them. Differential Revision: https://phab.mercurial-scm.org/D12254
Sun, 20 Feb 2022 15:18:15 -0700 tests: remove output conditionalized on no-py3
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:18:15 -0700] rev 48874
tests: remove output conditionalized on no-py3 I simply did a search for `^.* \(no-py3 !\)\n` and removed all matched lines. There are still some references to no-py3. But these were the simpler ones to match against. Differential Revision: https://phab.mercurial-scm.org/D12253
Sun, 20 Feb 2022 15:03:26 -0700 py3: use io.BytesIO directly
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 15:03:26 -0700] rev 48873
py3: use io.BytesIO directly Previously, pycompat.bytesio and pycompat.stringio referred to io.BytesIO. And util.bytesio and util.stringio aliased the pycompat symbols. This commit switches everything to use io.BytesIO directly. util.bytesio and util.stringio still exist to provide backwards compatibility, as they were the preferred symbols. Differential Revision: https://phab.mercurial-scm.org/D12252
Sun, 20 Feb 2022 14:52:40 -0700 check-py3-compat: drop support for Python 2
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 14:52:40 -0700] rev 48872
check-py3-compat: drop support for Python 2 We no longer support Python 2 so we can drop support for linting code for Python 2 support. This gets rid of the check for `from __future__`, enabling us to delete those imports. Differential Revision: https://phab.mercurial-scm.org/D12251
Thu, 03 Mar 2022 07:59:42 -0800 pycompat: remove large Python 2 block
Gregory Szorc <gregory.szorc@gmail.com> [Thu, 03 Mar 2022 07:59:42 -0800] rev 48871
pycompat: remove large Python 2 block We no longer support Python 2. So we can delete its compatibility code and remove the conditional and dedent the Python 3 code. In order to make the linter happy, we had to inline imports in the stanza at the top of the file. Differential Revision: https://phab.mercurial-scm.org/D12250
Tue, 01 Mar 2022 20:29:03 -0800 py3: use pickle directly
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 01 Mar 2022 20:29:03 -0800] rev 48870
py3: use pickle directly pycompat.pickle abstracted over the different pickle modules in Python 2 and 3. Now that we're Python 3 only, it is safe to use the `pickle` module directly. So this commit does that. As part of this we remove the rules from check-code.py that were forbidden direct pickle module use. We retain the `util.pickle` symbol for backwards compatibility, just in case some extensions were using it. Differential Revision: https://phab.mercurial-scm.org/D12249
Wed, 02 Mar 2022 17:51:27 -0800 pycompat: remove first not ispy3 block
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 02 Mar 2022 17:51:27 -0800] rev 48869
pycompat: remove first not ispy3 block We now require Python 3. So we can remove the first block supporting Python 2. Differential Revision: https://phab.mercurial-scm.org/D12247
Sun, 20 Feb 2022 13:43:44 -0700 import-checker: assume absolute and use modern import checker
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:43:44 -0700] rev 48868
import-checker: assume absolute and use modern import checker Since we require Python 3 now, we can assume we always use absolute imports and the modern import checker should be used. Differential Revision: https://phab.mercurial-scm.org/D12246
Sun, 20 Feb 2022 13:29:47 -0700 tests: unconditionalize some imports
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:29:47 -0700] rev 48867
tests: unconditionalize some imports Now that we require Python 3 we can simplify these imports. Differential Revision: https://phab.mercurial-scm.org/D12245
Sun, 20 Feb 2022 13:27:38 -0700 tests: remove last references to PYTHON3
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:27:38 -0700] rev 48866
tests: remove last references to PYTHON3 This removes the last references to PYTHON3. Differential Revision: https://phab.mercurial-scm.org/D12244
Sun, 20 Feb 2022 13:27:08 -0700 tests: simplify Windows and PYTHON3 conditionals
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:27:08 -0700] rev 48865
tests: simplify Windows and PYTHON3 conditionals PYTHON3 is always True. So this flow can be reduced. Differential Revision: https://phab.mercurial-scm.org/D12243
Sun, 20 Feb 2022 13:26:15 -0700 tests: delete some not PYTHON3 blocks
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:26:15 -0700] rev 48864
tests: delete some not PYTHON3 blocks These can never be used anymore. Differential Revision: https://phab.mercurial-scm.org/D12242
Sun, 20 Feb 2022 13:24:25 -0700 tests: unconditionalize _bytes2sys()
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:24:25 -0700] rev 48863
tests: unconditionalize _bytes2sys() As part of requiring Python 3. Differential Revision: https://phab.mercurial-scm.org/D12241
Sun, 20 Feb 2022 13:23:21 -0700 tests: remove Python 3 conditionalizing from variables
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:23:21 -0700] rev 48862
tests: remove Python 3 conditionalizing from variables Differential Revision: https://phab.mercurial-scm.org/D12240
Sun, 20 Feb 2022 13:22:12 -0700 tests: always encode session
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:22:12 -0700] rev 48861
tests: always encode session Differential Revision: https://phab.mercurial-scm.org/D12239
Sun, 20 Feb 2022 13:21:30 -0700 tests: unconditionalize bchr
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:21:30 -0700] rev 48860
tests: unconditionalize bchr We could probably just do bytes([x]) everywhere. But this eliminates use of PYTHON3. Differential Revision: https://phab.mercurial-scm.org/D12238
Sun, 20 Feb 2022 13:20:33 -0700 tests: unconditionalize _unified_diff
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:20:33 -0700] rev 48859
tests: unconditionalize _unified_diff Now that we're Python 3 only we can make this logic simpler. Differential Revision: https://phab.mercurial-scm.org/D12237
Sun, 20 Feb 2022 13:19:21 -0700 tests: collapse elif PYTHON3 block
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:19:21 -0700] rev 48858
tests: collapse elif PYTHON3 block PYTHON3 is always True now so this logic should be identical as to before. Differential Revision: https://phab.mercurial-scm.org/D12236
Sun, 20 Feb 2022 13:16:44 -0700 tests: collapse some more trivial if PYTHON3 blocks
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 13:16:44 -0700] rev 48857
tests: collapse some more trivial if PYTHON3 blocks This doesn't account for all of the references to PYTHON3. But it accounts for the ones that are more trivial and don't entail logical changes. Differential Revision: https://phab.mercurial-scm.org/D12235
Sun, 20 Feb 2022 11:57:59 -0700 tests: require Python 3.5+ in run-tests.py
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 20 Feb 2022 11:57:59 -0700] rev 48856
tests: require Python 3.5+ in run-tests.py We change the version check logic to hard fail if running on <= 3.5.0. The branch for <3.5 has been deleted. And the >=3.5 branch block has been dedented. Differential Revision: https://phab.mercurial-scm.org/D12234
Mon, 21 Feb 2022 16:18:39 +0100 revlog: use rust rank computation if available
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 16:18:39 +0100] rev 48855
revlog: use rust rank computation if available Differential Revision: https://phab.mercurial-scm.org/D12212
Mon, 21 Feb 2022 16:18:06 +0100 rust: expose rank computation function to python
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 16:18:06 +0100] rev 48854
rust: expose rank computation function to python Differential Revision: https://phab.mercurial-scm.org/D12211
Mon, 21 Feb 2022 18:06:02 +0100 rust: implement vcsgraph::RankedGraph for Index
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 18:06:02 +0100] rev 48853
rust: implement vcsgraph::RankedGraph for Index Differential Revision: https://phab.mercurial-scm.org/D12210
Mon, 21 Feb 2022 18:05:54 +0100 revlog: implement fast_rank retrieval in C
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 18:05:54 +0100] rev 48852
revlog: implement fast_rank retrieval in C This will be useful in particular to avoid going through the Python interpreter in native Rust functions. Differential Revision: https://phab.mercurial-scm.org/D12209
Mon, 21 Feb 2022 15:53:03 +0100 revlog: return 0 for the fast_rank of nullrev
pacien <pacien.trangirard@pacien.net> [Mon, 21 Feb 2022 15:53:03 +0100] rev 48851
revlog: return 0 for the fast_rank of nullrev By convention, the rank of the null revision is 0. This particular revision is never "physically" stored in the changelog, so it is a special case. For consistency, the value `None` is still being returned for revlogs which do not store the fast_rank property for any revision. Differential Revision: https://phab.mercurial-scm.org/D12208
Wed, 02 Mar 2022 18:42:00 -0800 setup: drop support for Python 3.5
Gregory Szorc <gregory.szorc@gmail.com> [Wed, 02 Mar 2022 18:42:00 -0800] rev 48850
setup: drop support for Python 3.5 We talked about this on the mailing list [1] and there seemed to be agreement that Python 3.5 is effectively dead and no longer worth supporting. So this commit changes our minimum version requirement to 3.6.2. [1] https://www.mercurial-scm.org/pipermail/mercurial-devel/2022-February/147885.html Differential Revision: https://phab.mercurial-scm.org/D12315
Sat, 19 Feb 2022 22:14:41 -0700 packaging: remove requirements constraints to support Python 2
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 22:14:41 -0700] rev 48849
packaging: remove requirements constraints to support Python 2 We just deleted support for Python 2 from the packaging code. We no longer need these package constraints in the requirements file to support Python 2. Differential Revision: https://phab.mercurial-scm.org/D12267
Sat, 19 Feb 2022 22:13:11 -0700 packaging: remove py2exe / Python 2.7 support
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 22:13:11 -0700] rev 48848
packaging: remove py2exe / Python 2.7 support This commit started by deleting references to py2exe (which is only used on Python 2). After pulling the thread, quite a lot of code was orphaned and was deleted. Differential Revision: https://phab.mercurial-scm.org/D12265
Sat, 19 Feb 2022 18:42:12 -0700 automation: delete code related to Python 2.7 support
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:42:12 -0700] rev 48847
automation: delete code related to Python 2.7 support The building of Inno and WiX installers took a python_version argument that allowed us to specify "2" or "3" for the major Python version. Since we no longer support Python 2, we can delete this argument and everything feeding into it. Differential Revision: https://phab.mercurial-scm.org/D12264
Sat, 19 Feb 2022 18:42:31 -0700 automation: drop support for Python 2.7 in Windows environment
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:42:31 -0700] rev 48846
automation: drop support for Python 2.7 in Windows environment We stop installing Python 2.7 in the Windows environment. We remove support for building Python 2.7 wheels and installers. There is still some Python 2.7 support cleanup to perform in automation. But this removes the biggest remaining chunk of references to 2.7. Differential Revision: https://phab.mercurial-scm.org/D12263
Sat, 19 Feb 2022 18:18:35 -0700 automation: drop support for Python 2.7 in Linux environment
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:18:35 -0700] rev 48845
automation: drop support for Python 2.7 in Linux environment We stop installing Python 2.7 via pyenv. We stop installing the system Python 2 packages. We delete support for running tests on Python 2.7. Differential Revision: https://phab.mercurial-scm.org/D12262
Sat, 19 Feb 2022 18:17:14 -0700 automation: make system3 the default for run-tests-linux
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:17:14 -0700] rev 48844
automation: make system3 the default for run-tests-linux We'll soon drop support for Python 2.7. Let's use Python 3 by default. Differential Revision: https://phab.mercurial-scm.org/D12261
Sat, 19 Feb 2022 18:04:49 -0700 automation: run hg with python3
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 19 Feb 2022 18:04:49 -0700] rev 48843
automation: run hg with python3 Python 2.7 support will go away soon. Let's use Python 3 as part of the automation. Differential Revision: https://phab.mercurial-scm.org/D12260
Thu, 03 Mar 2022 07:53:11 +0100 rust: enable Python 3 support unconditionally
Simon Sapin <simon.sapin@octobus.net> [Thu, 03 Mar 2022 07:53:11 +0100] rev 48842
rust: enable Python 3 support unconditionally Note: `cpython/python3-sys` is a default feature. Differential Revision: https://phab.mercurial-scm.org/D12316
Thu, 03 Mar 2022 09:45:21 +0900 cext: really remove Python 2 file handling code
Yuya Nishihara <yuya@tcha.org> [Thu, 03 Mar 2022 09:45:21 +0900] rev 48841
cext: really remove Python 2 file handling code Disclaimer: This is _WIN32 code and I have no machine to test.
Thu, 03 Mar 2022 09:43:10 +0900 cext: backout e9ca736f5b52 "remove Python 2 file handling code"
Yuya Nishihara <yuya@tcha.org> [Thu, 03 Mar 2022 09:43:10 +0900] rev 48840
cext: backout e9ca736f5b52 "remove Python 2 file handling code" It's if"n"def.
Wed, 02 Mar 2022 10:32:36 -0500 rust: jettison Python 2 support
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:32:36 -0500] rev 48839
rust: jettison Python 2 support Differential Revision: https://phab.mercurial-scm.org/D12283
Wed, 02 Mar 2022 10:30:37 -0500 setup: always decode xcode version
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:30:37 -0500] rev 48838
setup: always decode xcode version Not decoding was a Python 2 thing. Differential Revision: https://phab.mercurial-scm.org/D12282
Wed, 02 Mar 2022 10:29:54 -0500 setup: remove Rust support for Python 2
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:29:54 -0500] rev 48837
setup: remove Rust support for Python 2 Differential Revision: https://phab.mercurial-scm.org/D12281
Wed, 02 Mar 2022 10:25:11 -0500 cleanup: stop bundling concurrent.futures on Python 2
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:25:11 -0500] rev 48836
cleanup: stop bundling concurrent.futures on Python 2 We no longer support Python 2. Differential Revision: https://phab.mercurial-scm.org/D12280
Wed, 02 Mar 2022 10:24:49 -0500 cleanup: directly use concurrent.futures instead of via pycompat
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:24:49 -0500] rev 48835
cleanup: directly use concurrent.futures instead of via pycompat Python 2 is gone. Differential Revision: https://phab.mercurial-scm.org/D12279
Wed, 02 Mar 2022 10:23:53 -0500 imports: allow importing futures from concurrent
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:23:53 -0500] rev 48834
imports: allow importing futures from concurrent Differential Revision: https://phab.mercurial-scm.org/D12278
Wed, 02 Mar 2022 10:14:24 -0500 setup: remove pygit2 Python 2 logic
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:14:24 -0500] rev 48833
setup: remove pygit2 Python 2 logic Differential Revision: https://phab.mercurial-scm.org/D12277
Wed, 02 Mar 2022 10:13:45 -0500 setup: inline now-constant list
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:13:45 -0500] rev 48832
setup: inline now-constant list This varied when we supported Python 2. Differential Revision: https://phab.mercurial-scm.org/D12276
Wed, 02 Mar 2022 10:13:09 -0500 setup: unconditionally do this python 3 step
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:13:09 -0500] rev 48831
setup: unconditionally do this python 3 step Differential Revision: https://phab.mercurial-scm.org/D12275
Wed, 02 Mar 2022 10:12:48 -0500 setup: remove Python 2 support code for determining dylib suffix
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:12:48 -0500] rev 48830
setup: remove Python 2 support code for determining dylib suffix Differential Revision: https://phab.mercurial-scm.org/D12274
Wed, 02 Mar 2022 10:12:17 -0500 setup: inline os.fsdecode now that we're done with Python 2
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:12:17 -0500] rev 48829
setup: inline os.fsdecode now that we're done with Python 2 Differential Revision: https://phab.mercurial-scm.org/D12273
Wed, 02 Mar 2022 10:11:37 -0500 setup: inline encoding constant that is only used once
Augie Fackler <augie@google.com> [Wed, 02 Mar 2022 10:11:37 -0500] rev 48828
setup: inline encoding constant that is only used once This was variable back when we supported Python 2. Differential Revision: https://phab.mercurial-scm.org/D12272
(0) -30000 -10000 -3000 -1000 -240 +240 +1000 tip