Wed, 10 Aug 2022 15:01:50 -0400 dispatch: change cwd when loading local config
Arun Kulshreshtha <akulshreshtha@janestreet.com> [Wed, 10 Aug 2022 15:01:50 -0400] rev 49452
dispatch: change cwd when loading local config Previously, the `_getlocal` function would not correctly load the repo config when given a relative `rpath` and an alternate cwd via the `wd` parameter. Normally when `--cwd` is specified, hg changes to the given directory before attempting to load the local config (and therefore does not specify a `wd`). The only time the function is called with `wd` set is when hg is running as a command server (e.g., with chg), in which case each forked worker process will attempt to configure itself via `_getlocal` before responding to the client. When given a relative repo path, the worker fails to load the repo config, detects a config mismatch with the client, and enters a redirect/respawn loop. To fix this, we can simply change to the desired working directory during config loading. (Note that simply concatenating `wd` and `rpath` won't work in all cases. The repo path could be something more complicated than a simple relative path, such as a `union:` repo.)
Mon, 08 Aug 2022 17:27:49 +0200 contrib: add support for rhel9
Mathias De Mare <mathias.de_mare@nokia.com> [Mon, 08 Aug 2022 17:27:49 +0200] rev 49451
contrib: add support for rhel9
Mon, 08 Aug 2022 17:26:04 +0200 packagelib: use python3 by default
Mathias De Mare <mathias.de_mare@nokia.com> [Mon, 08 Aug 2022 17:26:04 +0200] rev 49450
packagelib: use python3 by default
Fri, 12 Aug 2022 17:27:07 -0400 tests: work around libmagic bug in svn subrepo tests
Arun Kulshreshtha <akulshreshtha@janestreet.com> [Fri, 12 Aug 2022 17:27:07 -0400] rev 49449
tests: work around libmagic bug in svn subrepo tests libmagic 5.40 introduced a bug [1] wherein ASCII text files with fewer than 3 distinct character values would be reported as binary data rather than as text. This bug was later fixed in version 5.41 [2]. SVN uses libmagic to determine the MIME type of added files with missing or unknown extensions [3]. This results in test failures on systems with libmagic 5.40 installed: $ echo a > a $ svn add a - A a + A (bin) a A simple workaround is to change the test file's content to include 3 distinct ASCII values (including the terminating newline). [1] https://bugs.astron.com/view.php?id=180 [2] https://bugs.astron.com/view.php?id=261 [3] https://svnbook.red-bean.com/en/1.8/svn.advanced.props.html#idm2649
Mon, 15 Aug 2022 16:12:41 +0100 revlog: make _partialmatch fail fast on almost-hex inputs
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 15 Aug 2022 16:12:41 +0100] rev 49448
revlog: make _partialmatch fail fast on almost-hex inputs Before this change, resolving a revision like [0123456789^] on a large repo can take multiple seconds because: - hg does not realize this is a revset, so it tries various things, including _partialmatch(b"0123456789^") - after the rust lookup fails, it falls back to pure hg - pure hg takes all-but-last chars and converts them to binary, which *succeeds*, so it does the expensive part.
Tue, 12 Jul 2022 01:13:56 +0200 perf-unbundle: add a perf command to time the unbundle operation
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 12 Jul 2022 01:13:56 +0200] rev 49447
perf-unbundle: add a perf command to time the unbundle operation Check documentation for details.
Mon, 11 Jul 2022 23:30:24 +0200 perf-bundle: accept --type argument
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Jul 2022 23:30:24 +0200] rev 49446
perf-bundle: accept --type argument
Mon, 11 Jul 2022 23:10:55 +0200 perf-bundle: accept --rev arguments
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Jul 2022 23:10:55 +0200] rev 49445
perf-bundle: accept --rev arguments This is fairly standard nowaday.
Mon, 11 Jul 2022 22:50:59 +0200 perf-bundle: add a new command to benchmark bundle creation time
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Jul 2022 22:50:59 +0200] rev 49444
perf-bundle: add a new command to benchmark bundle creation time
Tue, 12 Jul 2022 01:34:18 +0200 bundle: introduce a --exact option
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 12 Jul 2022 01:34:18 +0200] rev 49443
bundle: introduce a --exact option I have been wanting this options for a long time.
Mon, 11 Jul 2022 23:59:34 +0200 bundlespec: add documentation about existing option
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 11 Jul 2022 23:59:34 +0200] rev 49442
bundlespec: add documentation about existing option We have some documentation, lets make it complete.
Mon, 18 Jul 2022 19:18:00 -0400 setup: use the full executable manifest from `python.exe`
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jul 2022 19:18:00 -0400] rev 49441
setup: use the full executable manifest from `python.exe` The manifest embedded by the build process (before the string here is added) already accounts for the `<requestedExecutionLevel level="asInvoker" ...>` setting. (Note that the PyOxidizer build is missing this, so it will likely trigger the UAC escalation prompt on each run.) However, using `mt.exe` to merge the fragment with what is already in the manifest seems to strip all whitespace, making it unreadable. Since Mercurial can be run via `python.exe`, it makes sense that we would have the same manifest settings (like the supported OS list), though I'm unaware of any functionality this enables. It also has the nice effect of making the content readable from a resource editor. The manifest comes from python 3.9.12. Note that this seems to strip the `<?xml ... ?>` declaration when viewed with ResourceHacker 5.1.7, but this was also the state of things with the previous commit, and `mt.exe "-inputresource:hg.exe;#1" -out:extracted` does contain the declaration and the BOM in both cases. No idea why this differs from other executables.
Mon, 18 Jul 2022 17:19:56 -0400 setup: unconditionally enable the `long-paths-support` option on Windows
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jul 2022 17:19:56 -0400] rev 49440
setup: unconditionally enable the `long-paths-support` option on Windows I don't see anything talking about why this was experimental in the first place, but maybe it was concern about the level of python2 support for it. But now, both `python.exe` and the PyOxidizer build of `hg.exe` have a manifest that enables it, so leaving it off would mean some Mercurial installations could operate on a repo with long paths, and others couldn't. Note that only the wide character functions (XxxW) will have the length restriction lifted. Sadly, distutils applies `/MANIFEST:EMBED` to the linker in a way that can't easily be turned off, so we can't use `/MANIFESTFILE` with `extra_preargs` on `link_executable`. Fortunately, the compiler object provides a path to the `mt.exe` it found during initialization, because the previous incarnation seems to have assumed it is being run within an activated Visual Studio environment. That causes MSYS builds to fail, and probably would have broke the CI environment.
Mon, 18 Jul 2022 17:00:59 -0400 setup: stop shadowing the builtin `dir` symbol
Matt Harbison <matt_harbison@yahoo.com> [Mon, 18 Jul 2022 17:00:59 -0400] rev 49439
setup: stop shadowing the builtin `dir` symbol I hit this when debugging what's available on the compiler.
(0) -30000 -10000 -3000 -1000 -300 -100 -14 +14 +100 +300 +1000 tip