Mon, 03 Oct 2022 10:00:00 +0200 heptapod-ci: use shell script in pytype step stable 6.2.3
Raphaël Gomès <rgomes@octobus.net> [Mon, 03 Oct 2022 10:00:00 +0200] rev 49422
heptapod-ci: use shell script in pytype step
Wed, 28 Sep 2022 11:27:59 -0400 tests: migrate the pytype test to a shell script for easier CI processing stable
Matt Harbison <matt_harbison@yahoo.com> [Wed, 28 Sep 2022 11:27:59 -0400] rev 49421
tests: migrate the pytype test to a shell script for easier CI processing There have been recent hangs and timeout, but it's hard to debug because the *.t test redirects output to a file and only prints it if `pytype` actually exits. This shell script can be run directly by CI, and will allow more flexibility to try to cache and restore type stubs for further speed increases.
Thu, 22 Sep 2022 16:05:22 -0400 rhg: fix bugs around [use-dirstate-tracked-hint] and repo auto-upgrade stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 22 Sep 2022 16:05:22 -0400] rev 49420
rhg: fix bugs around [use-dirstate-tracked-hint] and repo auto-upgrade This makes two changes: - make rhg support the [dirstate-tracked-key-v1] requirement. I believe rhg never changes the tracked file set, so it's OK that it doesn't have any logic for writing this file. - fix the name of [format.use-dirstate-v2.automatic-upgrade-of-mismatching-repositories] config option in rhg, which makes rhg actually honor the auto-upgrade. These two issues cancelled each other out in tests (auto-upgrade was happening because [dirstate-tracked-key-v1] forced the fallback, not because of the config), which is I think why they went unnoticed earlier.
Tue, 20 Sep 2022 13:38:07 -0400 tests: fix the flaky test test-logtoprocess.t stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 20 Sep 2022 13:38:07 -0400] rev 49419
tests: fix the flaky test test-logtoprocess.t The main change is that we're waiting for the [touched] file to appear for 5 seconds instead of 0.1 seconds. Also, instead of implementing wait-on-file from scratch, we use the existing one from testlib/ that works well.
Tue, 06 Sep 2022 15:08:52 -0400 packaging: update dulwich to drop the certifi dependency on Windows stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 06 Sep 2022 15:08:52 -0400] rev 49418
packaging: update dulwich to drop the certifi dependency on Windows The presence of `certifi` causes the system certificate store to be ignored, which was reported as a bug against TortoiseHg[1]. It was only pulled in on Windows because of `dulwich`, which was copied from the old TortoiseHg install scripts, in order to support `hg-git`. This version of `dulwich` raises the minimum `urllib3` to a version (1.25) that does certificate verification by default, without the help of `certifi`[2]. We already bundle a newer version of `urllib3`. Note that `certifi` can still be imported from the user site directory, if installed there. But the installer no longer disables the system certificates by default. [1] https://foss.heptapod.net/mercurial/tortoisehg/thg/-/issues/5825 [2] https://github.com/jelmer/dulwich/issues/1025
Mon, 19 Sep 2022 17:34:42 -0400 tests: fix tar invocation, to address issue 6740 stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Mon, 19 Sep 2022 17:34:42 -0400] rev 49417
tests: fix tar invocation, to address issue 6740
Thu, 01 Sep 2022 16:41:48 +0200 relnotes: add 6.2.1 and 6.2.2 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Sep 2022 16:41:48 +0200] rev 49416
relnotes: add 6.2.1 and 6.2.2
Thu, 01 Sep 2022 16:44:00 +0200 Added signature for changeset b5c8524827d2 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Sep 2022 16:44:00 +0200] rev 49415
Added signature for changeset b5c8524827d2
Thu, 01 Sep 2022 16:43:36 +0200 Added tag 6.2.2 for changeset b5c8524827d2 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 01 Sep 2022 16:43:36 +0200] rev 49414
Added tag 6.2.2 for changeset b5c8524827d2
Thu, 01 Sep 2022 15:49:14 +0200 dirstate-v2: no longer register the data-file during transaction stable 6.2.2
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 01 Sep 2022 15:49:14 +0200] rev 49413
dirstate-v2: no longer register the data-file during transaction If the data file change during the transaction, we cannot truncate it. The content of the file itself is fine as it will get backed up at the same time as the docket. Leaving the trailing data at the end of failed transaction is fine. The dirstate-v2 format supports it. The dead data will simply we written over if necessary.
Tue, 30 Aug 2022 17:05:19 +0200 fsmonitor: use new dirstate APIs (issue6728) stable
Raphaël Gomès <rgomes@octobus.net> [Tue, 30 Aug 2022 17:05:19 +0200] rev 49412
fsmonitor: use new dirstate APIs (issue6728) On top of fixing fsmonitor, it moves one more "old API" use to the new one. This needs very verbose code to save a few function calls that are very expensive in Python.
Wed, 31 Aug 2022 06:37:42 +0200 dirstate-v2: backup the data file during the transaction (issue6730) stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 31 Aug 2022 06:37:42 +0200] rev 49411
dirstate-v2: backup the data file during the transaction (issue6730) If we backup of the docket, without doing a backup of the data file, we highly risk restoring a docket pointing to a missing file in the future. So we now backup the data-file alongside the docket.
Wed, 31 Aug 2022 05:48:32 +0200 dirstate-v2: display a possible issue with transaction stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 31 Aug 2022 05:48:32 +0200] rev 49410
dirstate-v2: display a possible issue with transaction If we backup the dirstate without the data file, we can end up in an inconsistent state of the transaction is rolled back.
Wed, 31 Aug 2022 05:36:53 +0200 test-dirstate: do not get out of the test directory stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 31 Aug 2022 05:36:53 +0200] rev 49409
test-dirstate: do not get out of the test directory It looks like we were doing one `cd ..` too many.
Mon, 29 Aug 2022 16:09:30 +0200 rust-matchers: fix behavior of `IncludeMatcher` with multiple includes stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 29 Aug 2022 16:09:30 +0200] rev 49408
rust-matchers: fix behavior of `IncludeMatcher` with multiple includes This change adds a test for this fix as well as an additional test case that was useful in debugging this behavior.
Tue, 30 Aug 2022 10:52:32 +0100 tests: improve portability by no longer using the flag [tar --force-local] stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Tue, 30 Aug 2022 10:52:32 +0100] rev 49407
tests: improve portability by no longer using the flag [tar --force-local] A different way of making sure the path is not interpreted as a URL is to never give this path to [tar], instead making tar read from stdin.
Thu, 25 Aug 2022 16:53:56 +0100 tests: remove flakiness in a time-dependent test stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 25 Aug 2022 16:53:56 +0100] rev 49406
tests: remove flakiness in a time-dependent test
Fri, 26 Aug 2022 11:36:20 +0100 tests: remove flakiness in test-nointerrupt.t stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 26 Aug 2022 11:36:20 +0100] rev 49405
tests: remove flakiness in test-nointerrupt.t The problem was that the reaction to the signal was racing against the completion of the command. Since reaction to the signal is to print a line of warning, we can fix this by waiting for that warning to appear before allowing the command to complete.
Tue, 19 Jul 2022 18:32:40 -0700 automation: set PATH when building on Windows stable
Gregory Szorc <gregory.szorc@gmail.com> [Tue, 19 Jul 2022 18:32:40 -0700] rev 49404
automation: set PATH when building on Windows Sometime in the 6.2 release cycle the Windows building automation broke. Building the wheel and even PyOxidizer based installers now fails with: ``` Exception: PowerShell execution failed: error: subprocess-exited-with-error Getting requirements to build wheel did not run successfully. exit code: 1 [1 lines of output] Unable to find a working hg binary to extract the version from the repository tags [end of output] note: This error originates from a subprocess, and is likely not a problem with pip. ``` I have a hunch this is a regression from upgrading pip in 1c00777702da, but I haven't verified this. It may not be, as PyOxidizer has its own bundled Python/pip. So maybe it is something in `setup.py`.
Sun, 17 Jul 2022 15:37:34 -0700 contrib: update Mercurial install in bootstrap environment stable
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 17 Jul 2022 15:37:34 -0700] rev 49403
contrib: update Mercurial install in bootstrap environment
Sat, 04 Jun 2022 11:18:32 -0700 automation: transition to Windows Server 2022 stable
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 04 Jun 2022 11:18:32 -0700] rev 49402
automation: transition to Windows Server 2022 Let's keep our Windows build environment modern by upgrading to the latest OS. As part of the upgrade, we pick up a migration to EC2Launch Version 2. This has a different config mechanism. So we need to port how we manage the administrator password. As part of migrating to the new YAML/JSON config file mechanism, we move the code to the powershell script that is run when the instance first launches. This ensures that the config is retained during the reboot we perform as part of building the Windows AMI. The motivation for this is I'm currently unable to build the Windows 2019 AMI due to an issue installing OpenSSH. This _just works_ on Windows Server 2022. I have no clue what the root cause is. I think it might have something to do with Microsoft not publishing the files in the right location. Differential Revision: https://phab.mercurial-scm.org/D12630
Fri, 03 Jun 2022 20:25:06 -0700 automation: refresh requirements stable
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 03 Jun 2022 20:25:06 -0700] rev 49401
automation: refresh requirements I'm hitting errors installing the old version of cffi due to an apparent issue where older versions of cffi aren't compatible with the modern Clang I'm using. So let's upgrade packages to unbreak things and to keep things modern. Differential Revision: https://phab.mercurial-scm.org/D12629
Wed, 17 Aug 2022 12:00:06 +0200 rust-status: ignored directories are now correctly only listed if opted into stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 17 Aug 2022 12:00:06 +0200] rev 49400
rust-status: ignored directories are now correctly only listed if opted into This fixes the behavior of `hg purge` removing empty ignored directory even without `--all` or `--ignored`.
Fri, 05 Aug 2022 14:18:13 +0100 test: show how purge removes ignored directories stable
Arseniy Alekseyev <aalekseyev@janestreet.com> [Fri, 05 Aug 2022 14:18:13 +0100] rev 49399
test: show how purge removes ignored directories Apparently the rust code path removes ignored directories even though the pure code path doesn't. Show this in tests.
Mon, 11 Jul 2022 22:47:56 +0200 rust: bump to memmap2 0.5.3, micro-timer 0.4.0, and crossbeam-channel 0.5.0 stable
Mads Kiilerich <mads@kiilerich.com> [Mon, 11 Jul 2022 22:47:56 +0200] rev 49398
rust: bump to memmap2 0.5.3, micro-timer 0.4.0, and crossbeam-channel 0.5.0 The merge in 12adf8c695ed had conflicts in rust/Cargo.lock and rust/hg-core/Cargo.toml . Let's ignore rust/Cargo.lock - it is regenerated. For rust/hg-core/Cargo.toml, stable had dd6b67d5c256 "rust: fix unsound `OwningDirstateMap`" which introduced ouroboros (and dropped stable_deref_trait). Default had ec8d9b5a5e7c "rust-hg-core: upgrade dependencies" which had a lot of churn bumping minimum versions - also patch versions. It is indeed a good idea to bump to *allow* use of latest package. That means that major versions should be bumped for packages after 1.0, and for packages below 1.0 minor versions should be bumped too. But it doesn't work to try enforce a policy of using latest patch by bumping versions at arbitrary times. For good or bad, the merge doesn't seem to have resolved the conflicts correctly, and many of the minor "upgrade dependencies" were lost again. Unfortunately, it also lost the bump of memmap2 to 0.5.3, which is needed for Fedora packaging where 0.4 isn't available. Same with micro-timer bump to 0.4 (which already is used in rhg). crossbeam-channel bump was also lost. This change fixes that regression by redoing these "important" lines of the merge "correctly". I propose this for stable, even though dependency changes on stable branches are annoying.
Thu, 28 Jul 2022 14:11:53 +0200 Added signature for changeset f69bffd00abe stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jul 2022 14:11:53 +0200] rev 49397
Added signature for changeset f69bffd00abe
Thu, 28 Jul 2022 14:11:35 +0200 Added tag 6.2.1 for changeset f69bffd00abe stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jul 2022 14:11:35 +0200] rev 49396
Added tag 6.2.1 for changeset f69bffd00abe
Wed, 27 Jul 2022 12:07:18 +0200 debug-discovery: apply spelling fixes from Raphaël stable 6.2.1
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 27 Jul 2022 12:07:18 +0200] rev 49395
debug-discovery: apply spelling fixes from Raphaël
Tue, 26 Jul 2022 11:10:43 +0200 tree-discovery: fix the request debug output and progress location stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jul 2022 11:10:43 +0200] rev 49394
tree-discovery: fix the request debug output and progress location This is now associated with each request.
Tue, 26 Jul 2022 10:48:06 +0200 debug-discovery: deal with case where common is empty stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jul 2022 10:48:06 +0200] rev 49393
debug-discovery: deal with case where common is empty This code was previously confused by case where: `heads_common == {nullid}`
Tue, 26 Jul 2022 10:39:27 +0200 debug-discovery: do not abort on unrelated repositories stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jul 2022 10:39:27 +0200] rev 49392
debug-discovery: do not abort on unrelated repositories This is a useful case to consider, so we should not abort in this case. A warning is still issued.
Tue, 26 Jul 2022 10:34:20 +0200 debug-discovery: gather the right number of roundtrips for tree discovery stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jul 2022 10:34:20 +0200] rev 49391
debug-discovery: gather the right number of roundtrips for tree discovery We where not counting the right amount of request before.
Tue, 26 Jul 2022 10:04:06 +0200 debug-discovery: also gather details on tree-discovery queries type stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jul 2022 10:04:06 +0200] rev 49390
debug-discovery: also gather details on tree-discovery queries type This is useful to understand the algorithm.
Tue, 26 Jul 2022 04:56:29 +0200 debug-discovery: properly apply remote filtering in "old" mode stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jul 2022 04:56:29 +0200] rev 49389
debug-discovery: properly apply remote filtering in "old" mode Before this change using `--remote-as-revs` with `--old` had no effect and everything was considered as "common", which is really not what we intended.
Tue, 26 Jul 2022 04:54:59 +0200 debug-discovery: fix a typo in the doc stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 26 Jul 2022 04:54:59 +0200] rev 49388
debug-discovery: fix a typo in the doc The second option should be `--remote-…` as we just talked about `--local-…` already.
Tue, 19 Jul 2022 18:40:20 -0400 packaging: bump dulwich to 0.20.45 stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 19 Jul 2022 18:40:20 -0400] rev 49387
packaging: bump dulwich to 0.20.45 I'm told the new dulwich avoids hg-git test failures.
Tue, 19 Jul 2022 18:33:26 -0400 packaging: update keyring on Windows to avoid spurious stacktraces stable
Matt Harbison <matt_harbison@yahoo.com> [Tue, 19 Jul 2022 18:33:26 -0400] rev 49386
packaging: update keyring on Windows to avoid spurious stacktraces When challenged for a network password, this would spew on Windows before it actually used the stored password: ``` Error initializing plugin EntryPoint(name='libsecret', value='keyring.backends.libsecret', group='keyring.backends'). Traceback (most recent call last): File "keyring.backend", line 198, in _load_plugins init_func = ep.load() File "importlib.metadata", line 77, in load module = import_module(match.group('module')) File "importlib", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked ModuleNotFoundError: No module named 'keyring.backends.libsecret' Error initializing plugin EntryPoint(name='macOS', value='keyring.backends.macOS', group='keyring.backends'). Traceback (most recent call last): File "keyring.backend", line 198, in _load_plugins init_func = ep.load() File "importlib.metadata", line 77, in load module = import_module(match.group('module')) File "importlib", line 127, in import_module return _bootstrap._gcd_import(name[level:], package, level) File "<frozen importlib._bootstrap>", line 1030, in _gcd_import File "<frozen importlib._bootstrap>", line 1007, in _find_and_load File "<frozen importlib._bootstrap>", line 984, in _find_and_load_unlocked ModuleNotFoundError: No module named 'keyring.backends.macOS' ``` We're kinda threading a needle here because the next version of `keyring` (currently at 23.7.0) requires `importlib-metadata` 3.6+, which PyOxidizer 0.22 doesn't support[1]. [1] https://github.com/indygreg/PyOxidizer/issues/609
Tue, 19 Jul 2022 12:41:46 +0200 mergestate: action name was str stable
Georges Racinet <georges.racinet@octobus.net> [Tue, 19 Jul 2022 12:41:46 +0200] rev 49385
mergestate: action name was str Apparently the standard for them is still to use byte strings. Found while looking at something else
Wed, 13 Jul 2022 18:27:40 +0200 sslutil: another use proper attribute to select python 3.7+ stable
Ondrej Pohorelsky <opohorel@redhat.com> [Wed, 13 Jul 2022 18:27:40 +0200] rev 49384
sslutil: another use proper attribute to select python 3.7+ The previous attribute was python 3.6+, but guarded a python 3.7+ block Using the correct attribute avoids: + File "/tmp/hgtests.bc0_uk2d/install/lib/python/mercurial/sslutil.py", line 577, in wrapserversocket + sslcontext.minimum_version = ssl.TLSVersion.TLSv1_1 + AttributeError: module 'ssl' has no attribute 'TLSVersion'
Tue, 12 Jul 2022 15:59:53 +0200 sslutil: use proper attribute to select python 3.7+ stable
Mathias De Mare <mathias.de_mare@nokia.com> [Tue, 12 Jul 2022 15:59:53 +0200] rev 49383
sslutil: use proper attribute to select python 3.7+ The previous attribute was python 3.6+, but guarded a python 3.7+ block. Using the correct attribute avoids: File "/usr/lib64/python3.6/site-packages/mercurial/sslutil.py", line 334, in wrapsocket sslcontext.minimum_version = ssl.TLSVersion.TLSv1_1 AttributeError: module 'ssl' has no attribute 'TLSVersion'
Wed, 06 Jul 2022 11:52:26 +0400 git: copy findmissingrevs() from revlog.py to gitlog.py (issue6472) stable
Anton Shestakov <av6@dwimlabs.net> [Wed, 06 Jul 2022 11:52:26 +0400] rev 49382
git: copy findmissingrevs() from revlog.py to gitlog.py (issue6472)
Mon, 04 Jul 2022 17:16:13 +0400 git: add a missing reset_copy keyword argument to dirstate.set_tracked() stable
Anton Shestakov <av6@dwimlabs.net> [Mon, 04 Jul 2022 17:16:13 +0400] rev 49381
git: add a missing reset_copy keyword argument to dirstate.set_tracked() Since nothing else in hgext/git supports copies yet, the best I can do is avoid TypeError: set_tracked() got an unexpected keyword argument 'reset_copy'.
Mon, 04 Jul 2022 15:01:52 +0400 git: make sure to fsdecode bookmark names everywhere (issue6723) stable
Anton Shestakov <av6@dwimlabs.net> [Mon, 04 Jul 2022 15:01:52 +0400] rev 49380
git: make sure to fsdecode bookmark names everywhere (issue6723)
Mon, 11 Jul 2022 09:50:32 +0200 Added signature for changeset 094a5fa3cf52 stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:50:32 +0200] rev 49379
Added signature for changeset 094a5fa3cf52
Mon, 11 Jul 2022 09:50:13 +0200 Added tag 6.2 for changeset 094a5fa3cf52 stable
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:50:13 +0200] rev 49378
Added tag 6.2 for changeset 094a5fa3cf52
Mon, 11 Jul 2022 01:51:20 +0200 procutil: make stream detection in make_line_buffered more correct and strict stable 6.2
Manuel Jacob <me@manueljacob.de> [Mon, 11 Jul 2022 01:51:20 +0200] rev 49377
procutil: make stream detection in make_line_buffered more correct and strict In make_line_buffered(), we don’t want to wrap the stream if we know that lines get flushed to the underlying raw stream already. Previously, the heuristic was too optimistic. It assumed that any stream which is not an instance of io.BufferedIOBase doesn’t need wrapping. However, there are buffered streams that aren’t instances of io.BufferedIOBase, like Mercurial’s own winstdout. The new logic is different in two ways: First, only for the check, if unwraps any combination of WriteAllWrapper and winstdout. Second, it skips wrapping the stream only if it is an instance of io.RawIOBase (or already wrapped). If it is an instance of io.BufferedIOBase, it gets wrapped. In any other case, the function raises an exception. This ensures that, if an unknown stream is passed or we add another wrapper in the future, we don’t wrap the stream if it’s already line buffered or not wrap the stream if it’s not line buffered. In fact, this was already helpful during development of this change. Without it, I possibly would have forgot that WriteAllWrapper needs to be ignored for the check, leading to unnecessary wrapping if stdout is unbuffered. The alternative would have been to always wrap unknown streams. However, I don’t think that anyone would benefit from being less strict. We can expect streams from the standard library to be subclassing either io.RawIOBase or io.BufferedIOBase, so running Mercurial in the standard way should not regress by this change. Py2exe might replace sys.stdout and sys.stderr, but that currently breaks Mercurial anyway and also these streams don’t claim to be interactive, so this function is not called for them.
Tue, 05 Jul 2022 17:53:26 +0200 repo-upgrade: avoid a crash when multiple optimisation are specified stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Jul 2022 17:53:26 +0200] rev 49376
repo-upgrade: avoid a crash when multiple optimisation are specified In Python 3, the type are no longer comparable and this expose the error.
Wed, 25 May 2022 18:29:21 +0200 rust: remove excessive calls to `#[timed]` stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 May 2022 18:29:21 +0200] rev 49375
rust: remove excessive calls to `#[timed]` This makes trace output *really* noisy and is only useful in case you want to take a look at a single revlog. This is easy to add back on a case-by-case basis and does not need to stay with the more permanent timers.
Wed, 25 May 2022 16:50:00 +0200 rhg: add error message for paths outside the repository when cwd != root stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 May 2022 16:50:00 +0200] rev 49374
rhg: add error message for paths outside the repository when cwd != root This mirrors the Python implementation. The relative path handling should probably be refactored into a util, but it it out of scope for this change.
Wed, 18 May 2022 15:53:28 +0100 rust: don't swallow valuable error information stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 18 May 2022 15:53:28 +0100] rev 49373
rust: don't swallow valuable error information This helps when diagnosing corruption, and is in general good practice. The information is here, valuable and can be used easily.
Wed, 18 May 2022 09:50:39 +0100 rust: add message to `DirstateV2ParseError` to give some context stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 18 May 2022 09:50:39 +0100] rev 49372
rust: add message to `DirstateV2ParseError` to give some context This is useful when debugging.
Sun, 12 Jun 2022 16:04:57 +0100 py3: stop using deprecated Element.getchildren() method in convert/darcs stable
Ian Moody <moz-ian@perix.co.uk> [Sun, 12 Jun 2022 16:04:57 +0100] rev 49371
py3: stop using deprecated Element.getchildren() method in convert/darcs This has been deprecated since py3.2, and removed entirely in py3.9
Sun, 12 Jun 2022 16:01:31 +0100 py3: fix bytes/unicode issues in convert/darcs stable
Ian Moody <moz-ian@perix.co.uk> [Sun, 12 Jun 2022 16:01:31 +0100] rev 49370
py3: fix bytes/unicode issues in convert/darcs - don't check for a binary symbol in globals(), which meant it always thought the module wasn't available - don't pass bytes to stdlib methods - return bytes in getchanges where Mercurial expects to see them
Wed, 15 Jun 2022 01:01:02 +0100 convert: remove old ElementTree import cruft from darcs stable
Ian Moody <moz-ian@perix.co.uk> [Wed, 15 Jun 2022 01:01:02 +0100] rev 49369
convert: remove old ElementTree import cruft from darcs All the `import elementtree` attempts seem to pre-date py2.5, when it was brought into the standard library, and the manual `cElementTree` fast implementation import has been unnecessary and deprecated since py3.3.
Thu, 16 Jun 2022 20:44:52 +0200 relnotes: add 6.2rc0 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 20:44:52 +0200] rev 49368
relnotes: add 6.2rc0
Thu, 16 Jun 2022 18:07:09 +0200 Added signature for changeset 288de6f5d724 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 18:07:09 +0200] rev 49367
Added signature for changeset 288de6f5d724
Thu, 16 Jun 2022 18:06:55 +0200 Added tag 6.2rc0 for changeset 288de6f5d724 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 18:06:55 +0200] rev 49366
Added tag 6.2rc0 for changeset 288de6f5d724
Thu, 16 Jun 2022 15:28:54 +0200 branching: merge default into stable stable 6.2rc0
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:28:54 +0200] rev 49365
branching: merge default into stable
Sat, 11 Jun 2022 00:26:25 +0200 sparse: use the rust code even when sparse is present
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 11 Jun 2022 00:26:25 +0200] rev 49364
sparse: use the rust code even when sparse is present With rust supporting more matcher types, we can now take this route in the sparse case too.
Fri, 10 Jun 2022 23:19:04 +0200 sparse: directly inline the `set_tracked` and `copy` wrapping
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 10 Jun 2022 23:19:04 +0200] rev 49363
sparse: directly inline the `set_tracked` and `copy` wrapping core is already aware of sparse, so lets move the handful of line of code that deal with this for the sake of simplicity and explicitness.
Sat, 11 Jun 2022 00:00:29 +0200 spares: clarify some test about merging copies
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 11 Jun 2022 00:00:29 +0200] rev 49362
spares: clarify some test about merging copies This new output clarify the important part out this merging : we want to be able to record the copy source even it is outside of the sparse profile.
Fri, 10 Jun 2022 23:29:04 +0200 sparse: drop the useless wrapping of `dirstate.set_untracked`
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 10 Jun 2022 23:29:04 +0200] rev 49361
sparse: drop the useless wrapping of `dirstate.set_untracked` The code of the wrapper only act in the case where the file is not tracked, so this has not effect for `untracked`. In addition the message explicitly mention `add` of a file and no test are breaking if we drop this. So we drop this for simplicity and cleanup
Sat, 11 Jun 2022 00:59:11 +0200 sparse: directly inline the `rebuild` wrapping
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 11 Jun 2022 00:59:11 +0200] rev 49360
sparse: directly inline the `rebuild` wrapping Core is already aware of sparse, so lets move the handful of line of code that deal with it in `dirstate.rebuild` for the sake of simplicity.
Sat, 11 Jun 2022 00:58:41 +0200 sparse: directly inline the `walk` wrapping
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 11 Jun 2022 00:58:41 +0200] rev 49359
sparse: directly inline the `walk` wrapping core is already aware of sparse, so lets move the handful of line of code that deal with it in `dirstate.walk` for the sake of simplicity.
Sat, 11 Jun 2022 00:56:50 +0200 sparse: use None as the sparse matcher value when disabled
Pierre-Yves David <pierre-yves.david@octobus.net> [Sat, 11 Jun 2022 00:56:50 +0200] rev 49358
sparse: use None as the sparse matcher value when disabled This create a clear signal for when the feature is unused. We could also create an `alwaysmatcher`, but using None is more explicit, so I went for it.
Wed, 08 Jun 2022 09:31:01 +0200 sparse: start moving away from the global variable for detection of usage
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 08 Jun 2022 09:31:01 +0200] rev 49357
sparse: start moving away from the global variable for detection of usage Code is now checking if the repository using the sparse feature and that's it. Some code in `debugsparse` still rely on "global" state, as it apply sparse logic before updating the requirement. Cleaning that up is more work that we signed up for, but we could narrow the hack to that specific command.
Fri, 10 Jun 2022 19:54:08 +0200 test: fix test-sparse-revlog output after debugdeltachain change
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 10 Jun 2022 19:54:08 +0200] rev 49356
test: fix test-sparse-revlog output after debugdeltachain change We need to get this test covered by the CI, in the meantime, here is a quick fix.
Wed, 08 Jun 2022 18:18:19 +0200 rust-dirstate: add support for nevermatcher
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 18:18:19 +0200] rev 49355
rust-dirstate: add support for nevermatcher This is in case this ever comes up, it's very easy to support, so might as well do it.
Wed, 08 Jun 2022 18:12:55 +0200 rust-dirstate: add `intersectionmatcher` to the allowed matchers
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 18:12:55 +0200] rev 49354
rust-dirstate: add `intersectionmatcher` to the allowed matchers `IntersectionMatcher` is now implemented in Rust.
Wed, 08 Jun 2022 18:09:24 +0200 rust: add IntersectionMatcher
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 18:09:24 +0200] rev 49353
rust: add IntersectionMatcher This will be used in the upcoming support for sparse checkouts in Rust-augmented status and later in rhg support for sparse checkouts.
Wed, 08 Jun 2022 15:39:14 +0200 rust-dirstate: add `unionmatcher` to the allowed matchers
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 15:39:14 +0200] rev 49352
rust-dirstate: add `unionmatcher` to the allowed matchers `UnionMatcher` is now implemented in Rust.
Wed, 08 Jun 2022 11:55:40 +0200 rust: add UnionMatcher
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 11:55:40 +0200] rev 49351
rust: add UnionMatcher This will be used in the upcoming support for sparse checkouts in Rust-augmented status and later in rhg support for sparse checkouts.
Wed, 08 Jun 2022 15:30:58 +0200 hg-cpython: refactor matcher transformation logic
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 15:30:58 +0200] rev 49350
hg-cpython: refactor matcher transformation logic This reduces duplication and will allow for recursive transformation in UnionMatcher.
Wed, 08 Jun 2022 15:12:34 +0200 rust: use owned types in `Matcher`
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 15:12:34 +0200] rev 49349
rust: use owned types in `Matcher` This simplifies the code a lot, allows for some refactoring to come. The original code tried to prevent allocations that were already happening anyway beforehand.
Thu, 09 Jun 2022 10:45:27 +0200 hg-cpython: fallback when encountering an unknown matcher
Raphaël Gomès <rgomes@octobus.net> [Thu, 09 Jun 2022 10:45:27 +0200] rev 49348
hg-cpython: fallback when encountering an unknown matcher At this point in the process, nothing user-visible has happened, it is still safe to fallback. This can happen now that we're going to be using "container matchers" like unionmatcher and intersectionmatcher. This is easier and less error-prone than recursive checking beforehand since only the presence of a transformation case will allow the process to continue.
Tue, 14 Jun 2022 19:40:35 +0200 auto-upgrade: add an option to silence the safe-mismatch message
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 19:40:35 +0200] rev 49347
auto-upgrade: add an option to silence the safe-mismatch message For well tested case, the message can get in the way, so we add a way to disable it.
Tue, 14 Jun 2022 15:22:05 +0200 auto-upgrade: add an option to silence the tracked-hint message
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 15:22:05 +0200] rev 49346
auto-upgrade: add an option to silence the tracked-hint message For well tested case, the message can get in the way, so we add a way to disable it.
Tue, 14 Jun 2022 15:19:45 +0200 auto-upgrade: add an option to silence the dirstate-v2 message
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 15:19:45 +0200] rev 49345
auto-upgrade: add an option to silence the dirstate-v2 message For well tested case, the message can get in the way, so we add a way to disable it.
Tue, 14 Jun 2022 15:17:51 +0200 auto-upgrade: rename a variable to match the actual content
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 15:17:51 +0200] rev 49344
auto-upgrade: rename a variable to match the actual content This was the result of a copy paste.
Tue, 14 Jun 2022 15:11:36 +0200 auto-upgrade: add an option to silence the share-safe message
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 15:11:36 +0200] rev 49343
auto-upgrade: add an option to silence the share-safe message For well tested case, the message can get in the way, so we add a way to disable it.
Tue, 14 Jun 2022 15:45:37 +0200 auto-upgrade: add a test that will host "quiet" testing
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 15:45:37 +0200] rev 49342
auto-upgrade: add a test that will host "quiet" testing We will add options to suppress the message in the coming changeset. The changes will be clearer if the full test is already in place.
Wed, 18 May 2022 10:39:45 +0100 bundlespec: check the `obsolescence` value before adding the caps
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 10:39:45 +0100] rev 49341
bundlespec: check the `obsolescence` value before adding the caps This does not really matters as the logic to decide wether or not adding the part is correct and elsewhere. However this seems like a good idea to align this logic witht he semantic of the option.
Wed, 25 May 2022 11:53:34 +0200 bundlespec: handle the presence of obsmarker part
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 May 2022 11:53:34 +0200] rev 49340
bundlespec: handle the presence of obsmarker part This make `hg debugbundle --spec` more informative about extra part in the bundle.
Wed, 18 May 2022 12:07:50 +0100 bundlespec: fix the generation of bundlespec for `cg.version`
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 12:07:50 +0100] rev 49339
bundlespec: fix the generation of bundlespec for `cg.version` If the value is non-default, we display it.
Wed, 18 May 2022 11:55:21 +0100 bundlespec: allow the bundle spec to control the bundle version
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 11:55:21 +0100] rev 49338
bundlespec: allow the bundle spec to control the bundle version This makes it possible to create bundle using changelog-v3. The `hg debugbundle --spec` output is borked, but this will be fixed in coming changesets.
Wed, 25 May 2022 11:27:16 +0200 bundlespec: do not check for `-` in the params portion of the bundlespec
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 May 2022 11:27:16 +0200] rev 49337
bundlespec: do not check for `-` in the params portion of the bundlespec Otherwise bundle parameter with `-` in their names result in a crash.
Wed, 18 May 2022 10:38:11 +0100 bundlespec: add processing of some parameter value
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 10:38:11 +0100] rev 49336
bundlespec: add processing of some parameter value The boolean option needs to be turned into boolean.
Wed, 18 May 2022 10:06:43 +0100 bundlespec: extract the parseparams closure
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 10:06:43 +0100] rev 49335
bundlespec: extract the parseparams closure It has no value being a closure. We extract it before modifying it further.
Wed, 25 May 2022 10:30:11 +0200 bundlespec: test `no` value for the `obsolescence` parameter
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 May 2022 10:30:11 +0200] rev 49334
bundlespec: test `no` value for the `obsolescence` parameter This is currently broken, but let us test for it first.
Wed, 25 May 2022 03:18:47 +0200 bundlespec: test that parameter overwrite the local config
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 May 2022 03:18:47 +0200] rev 49333
bundlespec: test that parameter overwrite the local config This is currently working, but havint it explicitly tested seems useful.
Tue, 24 May 2022 18:43:24 +0200 bundlespec: do not overwrite bundlespec value with the config one
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 24 May 2022 18:43:24 +0200] rev 49332
bundlespec: do not overwrite bundlespec value with the config one This is finally making the `obsolete` bundlespec paramater work.
Tue, 17 May 2022 18:14:32 +0100 bundlespec: add a `overwrite` parameter to set_param
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 18:14:32 +0100] rev 49331
bundlespec: add a `overwrite` parameter to set_param This will open the way for the configuration value to yield in front of the explicit bundle type.
Tue, 17 May 2022 16:36:32 +0100 bundlespec: merge the contentopts and params dictionnary
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 16:36:32 +0100] rev 49330
bundlespec: merge the contentopts and params dictionnary They are content using the same keys. Using differents object for access open the gates for confusion in the code using them (this is already the case). So we start fusing their usages to make the parameters more useful. More work will be needed to make them really useful, but the first step is here: not throwing the value away. However this is still not making the previously introduced test useful because currently, the default config value overwrite the one from the bundlespec. We will fix this in the coming changesets.
Wed, 25 May 2022 03:16:53 +0200 bundlespec: test if the "obsolete=" parameter is read
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 25 May 2022 03:16:53 +0200] rev 49329
bundlespec: test if the "obsolete=" parameter is read Narrator voice: Actually it is not. We will fix it in the next changeset.
Tue, 17 May 2022 16:59:31 +0100 bundlespec: fix lack of title in a evolve tests
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 16:59:31 +0100] rev 49328
bundlespec: fix lack of title in a evolve tests This is a full new test case and should be "flagged" as such.
Tue, 17 May 2022 14:25:53 +0100 bundlespec: make the `stream` case less special
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 14:25:53 +0100] rev 49327
bundlespec: make the `stream` case less special The handling of the stream case seems fragile (does not account for newer parts and options that will arise) and has special code dedicated to it. To simplify and strengthen things, we make it use the same mechanism as the other options. So we make it less special by making it a special value in the common case.
Tue, 17 May 2022 11:57:17 +0100 bundlespec: phase out the `_bundlespeccgversions` mapping
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 11:57:17 +0100] rev 49326
bundlespec: phase out the `_bundlespeccgversions` mapping The `_bundlespeccgversions` mapping is redundant with the `cg.version` parameter. We move all users to the `cg.version` version and phase out the `_bundlespeccgversions` mapping.
Mon, 13 Jun 2022 11:20:57 -0400 typing: add a missing suppression directive for `msvcrt`
Matt Harbison <matt_harbison@yahoo.com> [Mon, 13 Jun 2022 11:20:57 -0400] rev 49325
typing: add a missing suppression directive for `msvcrt`
Mon, 13 Jun 2022 11:18:41 -0400 windows: drop some py2 compatibility code
Matt Harbison <matt_harbison@yahoo.com> [Mon, 13 Jun 2022 11:18:41 -0400] rev 49324
windows: drop some py2 compatibility code The comment was wrong- the exception handler was the py3 case.
Mon, 13 Jun 2022 11:06:33 -0400 windows: prevent bytes from being passed to registry APIs
Matt Harbison <matt_harbison@yahoo.com> [Mon, 13 Jun 2022 11:06:33 -0400] rev 49323
windows: prevent bytes from being passed to registry APIs There was a TortoiseHg bug report in this area[1], and from inspection, it looks like passing `b""` as `valname` would fail to convert to unicode. The underlying API allows both `""` and `NULL` to return the default value for the key. [1] https://foss.heptapod.net/mercurial/tortoisehg/thg/-/issues/5803
Thu, 02 Jun 2022 16:56:39 +0200 relnotes: add 6.1.3
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Jun 2022 16:56:39 +0200] rev 49322
relnotes: add 6.1.3
Wed, 01 Jun 2022 01:45:49 +0200 cleanup: return directly instead of assigning variable
Manuel Jacob <me@manueljacob.de> [Wed, 01 Jun 2022 01:45:49 +0200] rev 49321
cleanup: return directly instead of assigning variable
Wed, 01 Jun 2022 01:30:48 +0200 commit: remove special handling of IOError (actually dead code)
Manuel Jacob <me@manueljacob.de> [Wed, 01 Jun 2022 01:30:48 +0200] rev 49320
commit: remove special handling of IOError (actually dead code) In the past, IOError was used to mark a file as removed. The differentiation between OSError and IOError in this place was introduced in e553a425751d, to avoid that “normal” OSErrors / IOErrors accidentally mark files as removed. This weird internal API was removed in 650b5b6e75ed. It seems like that changeset should have removed the differentiation, at least I don’t see any reason for keeping it. On Python 3, OSError and IOError are aliased. Therefore the removed code was actually dead.
Wed, 01 Jun 2022 02:21:41 +0200 py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de> [Wed, 01 Jun 2022 02:21:41 +0200] rev 49319
py3: catch specific OSError subclasses instead of checking errno On Python 3, the "not a directory" error is mapped to ENOTDIR instead of EINVAL. Therefore, catching the NotADirectoryError subclass is sufficient.
Wed, 01 Jun 2022 00:47:25 +0200 py3: catch specific OSError subclasses instead of checking errno
Manuel Jacob <me@manueljacob.de> [Wed, 01 Jun 2022 00:47:25 +0200] rev 49318
py3: catch specific OSError subclasses instead of checking errno Contrary to the previous changesets in this series, this covers cases where errno was checked for multiple values. EACCES -> PermissionError ENOENT -> FileNotFoundError ENOTDIR -> NotADirectoryError EISDIR -> IsADirectoryError
Tue, 31 May 2022 23:45:33 +0200 py3: catch ProcessLookupError instead of checking errno == ESRCH
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 23:45:33 +0200] rev 49317
py3: catch ProcessLookupError instead of checking errno == ESRCH
Tue, 31 May 2022 23:41:15 +0200 py3: catch PermissionError instead of checking errno == EPERM
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 23:41:15 +0200] rev 49316
py3: catch PermissionError instead of checking errno == EPERM
Tue, 31 May 2022 23:38:51 +0200 py3: catch PermissionError instead of checking errno == EACCES
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 23:38:51 +0200] rev 49315
py3: catch PermissionError instead of checking errno == EACCES
Tue, 31 May 2022 22:50:01 +0200 py3: catch FileNotFoundError instead of checking errno == ENOENT
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 22:50:01 +0200] rev 49314
py3: catch FileNotFoundError instead of checking errno == ENOENT
Tue, 31 May 2022 21:16:17 +0200 py3: catch FileExistsError instead of checking errno == EEXIST
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 21:16:17 +0200] rev 49313
py3: catch FileExistsError instead of checking errno == EEXIST
Tue, 31 May 2022 16:54:58 +0200 py3: catch BrokenPipeError instead of checking errno == EPIPE
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 16:54:58 +0200] rev 49312
py3: catch BrokenPipeError instead of checking errno == EPIPE
Tue, 31 May 2022 04:18:22 +0200 py3: catch ChildProcessError instead of checking errno == ECHILD
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 04:18:22 +0200] rev 49311
py3: catch ChildProcessError instead of checking errno == ECHILD
Tue, 31 May 2022 04:11:34 +0200 py3: remove retry on EINTR errno
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 04:11:34 +0200] rev 49310
py3: remove retry on EINTR errno Since the implementation of PEP 475 (Python 3.5), Python retries system calls failing with EINTR. Therefore we don’t need the logic that retries it in Python code.
Tue, 31 May 2022 03:39:42 +0200 py3: stop catching TypeError that was raised on Python 2
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 03:39:42 +0200] rev 49309
py3: stop catching TypeError that was raised on Python 2
Tue, 31 May 2022 03:06:05 +0200 py3: use `x.hex()` instead of `pycompat.sysstr(node.hex(x))`
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 03:06:05 +0200] rev 49308
py3: use `x.hex()` instead of `pycompat.sysstr(node.hex(x))`
Tue, 31 May 2022 02:47:22 +0200 tests: assume that `raw` attribute is present on original socket file object
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 02:47:22 +0200] rev 49307
tests: assume that `raw` attribute is present on original socket file object It seems like the original socket file object is always an io.BufferedIO instance. If not, the code will fail and we should try harder to get the socket object (e.g. if the original socket file object is unbuffered, we can get the `_sock` attribute directly from it).
Tue, 31 May 2022 02:36:05 +0200 tests: constant-fold a `pycompat.ispy3` in testlib/badserverext.py
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 02:36:05 +0200] rev 49306
tests: constant-fold a `pycompat.ispy3` in testlib/badserverext.py
Tue, 31 May 2022 02:19:07 +0200 tests: remove Python 2 special cases in test-stdio.py
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 02:19:07 +0200] rev 49305
tests: remove Python 2 special cases in test-stdio.py
Sun, 29 May 2022 15:43:21 +0200 py3: remove dead code to make file descriptors non-inheritable
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 15:43:21 +0200] rev 49304
py3: remove dead code to make file descriptors non-inheritable On Python 3, file descriptors are already non-inheritable by default.
Sun, 29 May 2022 15:53:01 +0200 py3: remove hack that removed flush argument from print() calls on Python 2
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 15:53:01 +0200] rev 49303
py3: remove hack that removed flush argument from print() calls on Python 2
Sun, 29 May 2022 16:12:27 +0200 py3: remove long() compatibility code
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 16:12:27 +0200] rev 49302
py3: remove long() compatibility code
Tue, 31 May 2022 02:04:24 +0200 zeroconf: constant-fold a `pycompat.ispy3`
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 02:04:24 +0200] rev 49301
zeroconf: constant-fold a `pycompat.ispy3` I’ve checked that both bytes and str gets passed as the `name` parameter, so the rest of the condition is still required. Because there aren’t really any tests for the extensions, I didn’t want to refactor it to pass a single type.
Tue, 31 May 2022 01:23:19 +0200 py3: remove conditional to import collections.abc.MutableMapping
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 01:23:19 +0200] rev 49300
py3: remove conditional to import collections.abc.MutableMapping
Sun, 29 May 2022 16:24:44 +0200 py3: remove dead code to open file with O_CLOEXEC on Python 2
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 16:24:44 +0200] rev 49299
py3: remove dead code to open file with O_CLOEXEC on Python 2 The O_CLOEXEC flag is passed by default on Python 3.
Tue, 31 May 2022 01:16:41 +0200 py3: don’t encode node.bin() argument
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 01:16:41 +0200] rev 49298
py3: don’t encode node.bin() argument It accepts str and bytes.
Tue, 31 May 2022 01:06:29 +0200 convert: inline Python 3 variant of url2pathname_like_subversion()
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 01:06:29 +0200] rev 49297
convert: inline Python 3 variant of url2pathname_like_subversion()
Tue, 31 May 2022 00:50:29 +0200 py3: constant-fold some `pycompat.ispy3`
Manuel Jacob <me@manueljacob.de> [Tue, 31 May 2022 00:50:29 +0200] rev 49296
py3: constant-fold some `pycompat.ispy3`
Sun, 29 May 2022 15:38:01 +0200 py3: use `zip()` instead of trying to use `itertools.izip()`
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 15:38:01 +0200] rev 49295
py3: use `zip()` instead of trying to use `itertools.izip()`
Sun, 29 May 2022 15:33:39 +0200 py3: replace mention of “xrange” in docstring by “range”
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 15:33:39 +0200] rev 49294
py3: replace mention of “xrange” in docstring by “range”
Sun, 29 May 2022 15:32:43 +0200 py3: remove xrange() compatibility code
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 15:32:43 +0200] rev 49293
py3: remove xrange() compatibility code Some code used its own xrange() compatibility code instead of pycompat.xrange().
Sun, 29 May 2022 15:17:27 +0200 py3: replace `pycompat.xrange` by `range`
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 15:17:27 +0200] rev 49292
py3: replace `pycompat.xrange` by `range`
Sun, 29 May 2022 12:38:54 +0200 hgweb: remove dead code handling UnicodeDecodeError
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 12:38:54 +0200] rev 49291
hgweb: remove dead code handling UnicodeDecodeError I’m quite confident that the error can’t happen on Python 3, as the main motivation for separating bytes and str in Python 3 was to avoid this class of errors.
Sun, 29 May 2022 12:28:31 +0200 cleanup: remove import of already imported module
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 12:28:31 +0200] rev 49290
cleanup: remove import of already imported module
Sun, 29 May 2022 12:25:24 +0200 cleanup: rename some functions to avoid redefinitions
Manuel Jacob <me@manueljacob.de> [Sun, 29 May 2022 12:25:24 +0200] rev 49289
cleanup: rename some functions to avoid redefinitions
Sat, 28 May 2022 22:08:13 +0200 thirdparty: remove Python 2-specific selectors2 copy
Manuel Jacob <me@manueljacob.de> [Sat, 28 May 2022 22:08:13 +0200] rev 49288
thirdparty: remove Python 2-specific selectors2 copy The selectors module was added in Python 3.4. Because we require Python 3.6, it will always be available. Therefore the selectors2 module is not imported. I’ve verified that the selectors2-specific workaround in commandserver.py is not necessary with the selectors module from the standard library. It returns an empty list if timeout was exceeded. The pytype directive was needed to silence the following error: File "/tmp/mercurial-ci/mercurial/worker.py", line 299, in _posixworker: No attribute 'close' on int [attribute-error] In Union[_typeshed.HasFileno, int] File "/tmp/mercurial-ci/mercurial/worker.py", line 299, in _posixworker: No attribute 'close' on _typeshed.HasFileno [attribute-error] In Union[_typeshed.HasFileno, int]
Wed, 08 Jun 2022 15:46:04 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 15:46:04 +0200] rev 49287
branching: merge stable into default
Thu, 02 Jun 2022 23:57:56 +0200 chg: replace mercurial.util.recvfds() by simpler pure Python implementation
Manuel Jacob <me@manueljacob.de> [Thu, 02 Jun 2022 23:57:56 +0200] rev 49286
chg: replace mercurial.util.recvfds() by simpler pure Python implementation On Python 3, we have socket.socket.recvmsg(). This makes it possible to receive FDs in pure Python code. The new code behaves like the previous implementations, except that it’s more strict about the format of the ancillary data. This works because we know in which format the FDs are passed. Because the code is (and always has been) specific to chg (payload is 1 byte, number of passed FDs is limited) and we now have only one implementation and the code is very short, I decided to stop exposing a function in mercurial.util. Note on terminology: The SCM_RIGHTS mechanism is used to share open file descriptions to another process over a socket. The sending side passes an array of file descriptors and the receiving side receives an array of file descriptors. The file descriptors are different in general on both sides but refer to the same open file descriptions. The two terms are often conflated, even in the official documentation. That’s why I used “FD” above, which could mean both “file descriptor” and “file description”.
Mon, 06 Jun 2022 13:58:32 +0400 parsers: drop one extra argument to PyErr_Format
Anton Shestakov <av6@dwimlabs.net> [Mon, 06 Jun 2022 13:58:32 +0400] rev 49285
parsers: drop one extra argument to PyErr_Format GCC gave the following warning during `make local`: mercurial/cext/parsers.c: In function 'dirstate_item_from_v1_data': mercurial/cext/parsers.c:413:30: warning: too many arguments for format [-Wformat-extra-args] 413 | "unknown state: `%c` (%d, %d, %d)", state, mode, | ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ To reproduce, you might need to add the -Wformat-extra-args flag, because it isn't present for me when building for the default python3. But I can see this warning while simply building 6.1 with `make PYTHON=python2 clean local`. I don't think this NULL was useful, because other instances of PyErr_Format() don't have any NULLs as the final argument, but keep in mind that I don't know python's C API.
Fri, 03 Jun 2022 17:39:58 +0200 search-discovery-case: update documentation of a function
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 03 Jun 2022 17:39:58 +0200] rev 49284
search-discovery-case: update documentation of a function We return data, it is simpler when we know what these data means.
Sun, 22 May 2022 03:50:34 +0200 worker: avoid potential partial write of pickled data
Manuel Jacob <me@manueljacob.de> [Sun, 22 May 2022 03:50:34 +0200] rev 49283
worker: avoid potential partial write of pickled data Previously, the code wrote the pickled data using os.write(). However, os.write() can write less bytes than passed to it. To trigger the problem, the pickled data had to be larger than 2147479552 bytes on my system. Instead, open a file object and pass it to pickle.dump(). This also has the advantage that it doesn’t buffer the whole pickled data in memory. Note that the opened file must be buffered because pickle doesn’t support unbuffered streams because unbuffered streams’ write() method might write less bytes than passed to it (like os.write()) but pickle.dump() relies on that all bytes are written (see https://github.com/python/cpython/issues/93050). The side effect of using a file object and a with statement is that wfd is explicitly closed now while it seems like before it was implicitly closed by process exit.
Wed, 01 Jun 2022 03:12:23 +0200 mr-template: drop the "title and description"
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 03:12:23 +0200] rev 49282
mr-template: drop the "title and description" I though I would affect the template in the menu itself, however it just a normal piece of text that should not be here.
Wed, 01 Jun 2022 01:32:33 +0200 debugindex: add a `rank` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:32:33 +0200] rev 49281
debugindex: add a `rank` column
Wed, 01 Jun 2022 01:34:33 +0200 debugindex: add a `sd-chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:33 +0200] rev 49280
debugindex: add a `sd-chunk-size` column
Wed, 01 Jun 2022 01:34:21 +0200 debugindex: add a `sidedata-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:21 +0200] rev 49279
debugindex: add a `sidedata-offset` column
Wed, 01 Jun 2022 01:34:43 +0200 debugindex: add a `sd-comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:43 +0200] rev 49278
debugindex: add a `sd-comp-mode` column
Wed, 01 Jun 2022 01:33:36 +0200 debugindex: add a `chunk-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:36 +0200] rev 49277
debugindex: add a `chunk-size` column
Wed, 01 Jun 2022 01:33:13 +0200 debugindex: add a `data-offset` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:13 +0200] rev 49276
debugindex: add a `data-offset` column
Wed, 01 Jun 2022 01:33:47 +0200 debugindex: add a `comp-mode` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:47 +0200] rev 49275
debugindex: add a `comp-mode` column
Wed, 01 Jun 2022 01:33:25 +0200 debugindex: add a `flags` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:33:25 +0200] rev 49274
debugindex: add a `flags` column
Wed, 01 Jun 2022 01:34:10 +0200 debugindex: add a `delta-base` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:34:10 +0200] rev 49273
debugindex: add a `delta-base` column
Wed, 01 Jun 2022 01:43:17 +0200 debugindex: add a `full-size` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:43:17 +0200] rev 49272
debugindex: add a `full-size` column
Wed, 01 Jun 2022 01:32:54 +0200 debugindex: add a `p2-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:32:54 +0200] rev 49271
debugindex: add a `p2-rev` column This will be useful in case of corrupted index.
Wed, 01 Jun 2022 01:32:45 +0200 debugindex: add a `p1-rev` column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:32:45 +0200] rev 49270
debugindex: add a `p1-rev` column This will be useful in case of corrupted index.
Wed, 01 Jun 2022 00:54:19 +0200 debugindex: introduce a concept of "verbose-only" column
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 00:54:19 +0200] rev 49269
debugindex: introduce a concept of "verbose-only" column We are about to add a bunch of new column and most of them are probably only relevant to --verbose. We add some more testing of the `--verbose` mode in a sidedata context.
Wed, 01 Jun 2022 00:59:44 +0200 debugindex: move to a flexible column
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 00:59:44 +0200] rev 49268
debugindex: move to a flexible column Each column is now declared as a decorated function. This will make it much simpler to add more new column in the future.
Wed, 01 Jun 2022 01:13:13 +0200 debugindex: rename the parent column to mention nodeid
Pierre-Yves DAVID <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 01:13:13 +0200] rev 49267
debugindex: rename the parent column to mention nodeid We will add new columns with the "revnum" version of the parent. It will be useful in case we need to inspect a corrupted revlog index.
Wed, 01 Jun 2022 00:59:51 +0200 debugindex: align column name on the right
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 01 Jun 2022 00:59:51 +0200] rev 49266
debugindex: align column name on the right It will be simpler to align everything on the same side, and the right seems a better side as it match the value alignment.
Mon, 30 May 2022 23:24:14 +0200 debugindex: move the logic into its own module
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 30 May 2022 23:24:14 +0200] rev 49265
debugindex: move the logic into its own module Adding more information will significantly increase the amount of code. So we move the code into its own module before making it more complex.
Mon, 30 May 2022 11:30:48 +0200 debugindex: rename to debugindex debug-revlog-index
Pierre-Yves David <pierre-yves.david@octobus.net> [Mon, 30 May 2022 11:30:48 +0200] rev 49264
debugindex: rename to debugindex debug-revlog-index The command dump some content of the revlog index and omit a lot of information. I am going to make it display the missing information. For clarity, we rename the command to explicitly mention revlog.
Mon, 30 May 2022 16:18:12 +0200 node: stop converting binascii.Error to TypeError in bin()
Manuel Jacob <me@manueljacob.de> [Mon, 30 May 2022 16:18:12 +0200] rev 49263
node: stop converting binascii.Error to TypeError in bin() Changeset f574cc00831a introduced the wrapper, to make bin() behave like on Python 2, where it raised TypeError in many cases. Another previous approach, changing callers to catch binascii.Error in addition to TypeError, was backed out after negative review feedback [1]. However, I think it’s worth reconsidering the approach. Now that we’re on Python 3 only, callers have to catch only binascii.Error instead of both. Catching binascii.Error instead of TypeError has the advantage that it’s less likely to cover a programming error (e.g. passing an int to bin() raises TypeError). Also, raising TypeError never made sense semantically when bin() got an argument of valid type. As a side-effect, this fixed an exception in test-http-bad-server.t. The TODO was outdated: it was not an uncaught ValueError in batch.results() but uncaught TypeError from the now removed wrapper. Now that bin() raises binascii.Error instead of TypeError, it gets converted to a proper error in wirepeer.heads.<locals>.decode() that catches ValueError (superclass of binascii.Error). This is a good example of why this changeset is a good idea. Catching TypeError instead of ValueError there would not make much sense. [1] https://phab.mercurial-scm.org/D2244
Mon, 30 May 2022 00:45:00 +0200 revlog: make try block smaller
Manuel Jacob <me@manueljacob.de> [Mon, 30 May 2022 00:45:00 +0200] rev 49262
revlog: make try block smaller Making try blocks as small as possible is generally a good idea, especially when catching very general errors like TypeError.
Mon, 30 May 2022 00:39:53 +0200 revlog: make round-down pattern clearer
Manuel Jacob <me@manueljacob.de> [Mon, 30 May 2022 00:39:53 +0200] rev 49261
revlog: make round-down pattern clearer
Thu, 02 Jun 2022 16:24:06 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Jun 2022 16:24:06 +0200] rev 49260
branching: merge stable into default
Fri, 27 May 2022 02:54:20 +0200 test-revlog: adds a new root revision with a delta against nullrev
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 May 2022 02:54:20 +0200] rev 49259
test-revlog: adds a new root revision with a delta against nullrev We add a revision with null parent but that is not the first revision of the revlog. It make it a different a case that is worthy of testing.
Fri, 27 May 2022 02:52:46 +0200 test-revlog: adds a non-root revision with a delta against nullrev
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 May 2022 02:52:46 +0200] rev 49258
test-revlog: adds a non-root revision with a delta against nullrev Using a revision with non-null parents makes it a different case that is worthy of testing.
Fri, 27 May 2022 03:14:23 +0200 test-revlog: update the patch used to test delta againts nullrev
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 27 May 2022 03:14:23 +0200] rev 49257
test-revlog: update the patch used to test delta againts nullrev We need to be careful to not create invalid delta for changelog. Changelog is special because it does not use any delta in practice and don't use general delta in its format. Using the new patch will help use to test more cases.
Fri, 27 May 2022 14:37:12 +0400 tests: remove hg10 requirement from test-check-pylint.t
Anton Shestakov <av6@dwimlabs.net> [Fri, 27 May 2022 14:37:12 +0400] rev 49256
tests: remove hg10 requirement from test-check-pylint.t Since pylint does its own directory traversal to find files to check and doesn't use hg locate command, this requirement is not valid. See also a29f071751df.
Fri, 27 May 2022 14:33:32 +0400 tests: add hg10 requirement to test-check-module-imports.t
Anton Shestakov <av6@dwimlabs.net> [Fri, 27 May 2022 14:33:32 +0400] rev 49255
tests: add hg10 requirement to test-check-module-imports.t This requirement exists to make sure for hg has locate command, which is used in this test file for getting a list of files to check. Since in theory current versions of tests could be run on older hg, it doesn't hurt to mark even this version requirement (as old as it is). See also: a29f071751df.
Sun, 22 May 2022 00:10:58 +0200 worker: implement _blockingreader.readinto() (issue6444)
Manuel Jacob <me@manueljacob.de> [Sun, 22 May 2022 00:10:58 +0200] rev 49254
worker: implement _blockingreader.readinto() (issue6444) The core logic for readinto() was already implemented in read(), so this is mostly extracting that code into its own method. Another fix for issue6444 was committed to the stable branch: 2fe4efaa59af. That is a minimal fix that implements readinto() only on Python versions that require readinto() (3.8.0 and 3.8.1), which is the right approach for the stable branch. However, I think that this changeset has its value. It improves performance in cases when pickle can use readinto(), it reduces code duplication compared to the other patch, and by defining readinto() on all Python versions, it makes behavior more consistent across all Python versions. This changesets reverts the other change.
Sat, 21 May 2022 23:31:30 +0200 worker: stop relying on garbage collection to release memoryview
Manuel Jacob <me@manueljacob.de> [Sat, 21 May 2022 23:31:30 +0200] rev 49253
worker: stop relying on garbage collection to release memoryview On CPython, before resizing the bytearray, all memoryviews referencing it must be released. Before this change, we ensured that all references to them were deleted. On CPython, this was enough to set the reference count to zero, which results in garbage collecting and releasing them. On PyPy, releasing the memoryviews is not necessary because they are implemented differently. If it would be necessary however, ensuring that all references are deleted would not be suffient because PyPy doesn’t use reference counting. By using with statements that take care of releasing the memoryviews, we ensure that the bytearray is resizable without relying on implementation details. So while this doesn’t fix any observable bug, it increases compatiblity with other and future Python implementations.
Sat, 21 May 2022 22:24:02 +0200 worker: add docstring to _blockingreader
Manuel Jacob <me@manueljacob.de> [Sat, 21 May 2022 22:24:02 +0200] rev 49252
worker: add docstring to _blockingreader
Sat, 21 May 2022 22:22:19 +0200 worker: explain why pickle reading stream has to be unbuffered
Manuel Jacob <me@manueljacob.de> [Sat, 21 May 2022 22:22:19 +0200] rev 49251
worker: explain why pickle reading stream has to be unbuffered
Tue, 17 May 2022 13:53:14 +0100 bundle: quick fix to ludicrous performance penalty
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 17 May 2022 13:53:14 +0100] rev 49250
bundle: quick fix to ludicrous performance penalty We tried a `hg bundle --base ':(tip^)' --rev 'all()'` on a large repository and it spent 3 minutes on this 2 list comprehensions. This change remove this cost. There are still a lot of low hanging fruits as the command still take 30 seconds. However this is a trivial patch with a massive speedup so I'll just sent it.
Fri, 20 May 2022 14:27:46 +0200 deltas: add a debug-delta-find command to analyse delta search
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 20 May 2022 14:27:46 +0200] rev 49249
deltas: add a debug-delta-find command to analyse delta search See command documentation for details. For some reason, pytype is confused by our usage of None/deltainfo variable, so I had to quiet it.
Thu, 19 May 2022 23:39:42 +0100 deltas: add a `debug.revlog.debug-delta` config option enable output
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 23:39:42 +0100] rev 49248
deltas: add a `debug.revlog.debug-delta` config option enable output This provide a way to enable the code introduced in the previous changeset. This will provide a large amount of output when applying a bundle with details about each delta "computation".
Thu, 19 May 2022 23:39:23 +0100 deltas: add code to display information about the result of `finddeltainfo`
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 23:39:23 +0100] rev 49247
deltas: add code to display information about the result of `finddeltainfo` I have been looking into performance issue around pull and getting more information about the computation and time involved into applying each revision is very useful. There will be various way to use this new output, so I am introducing the code first.
Thu, 21 Apr 2022 11:32:51 +0200 test: update `test-sparse-revlog` output
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 21 Apr 2022 11:32:51 +0200] rev 49246
test: update `test-sparse-revlog` output This got changed at some point.
Wed, 25 May 2022 17:23:16 +0200 branching: fix wrong merge conflict resolution from 13dfad0f9f7a
Manuel Jacob <me@manueljacob.de> [Wed, 25 May 2022 17:23:16 +0200] rev 49245
branching: fix wrong merge conflict resolution from 13dfad0f9f7a 13dfad0f9f7a merged stable into default, but accidentally added the _blockingreader class from stable (but deindented) instead of merging the changes from stable (2fe4efaa59af) into the existing _blockingreader class. This resulted in the _blockingreader being there two times.
Thu, 19 May 2022 00:51:36 +0100 debugdeltachain: detect a special case where parents are "skipped"
Pierre-Yves David <pierre-yves.david@octobus.net> [Thu, 19 May 2022 00:51:36 +0100] rev 49244
debugdeltachain: detect a special case where parents are "skipped" See inline comment for details, this is a case where the delta is neither against p1 or p2, Yet it is still a simple delta part of a simple chain. We now display them as `skip1/skip2` instead of `other`.
Wed, 18 May 2022 17:29:03 +0100 debugdeltachain: document the possible value for deltatype
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 17:29:03 +0100] rev 49243
debugdeltachain: document the possible value for deltatype So that one can understand what is displayed by the command.
Wed, 18 May 2022 17:22:32 +0100 debugdeltachain: also display p1/p2
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 17:22:32 +0100] rev 49242
debugdeltachain: also display p1/p2 Looking at the parents is a common need when trying to understanding why a delta was chosen, having it readily available helps a lot.
Wed, 18 May 2022 16:50:55 +0100 debugdeltachain: glob variance of "test-generaldelta"
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 16:50:55 +0100] rev 49241
debugdeltachain: glob variance of "test-generaldelta" We mostly care about generaldelta happening, the exact details of storage size variation is not really important so we can glob it instead of having multiple lines for each variances. This will make updating the output of the command simpler.
Wed, 18 May 2022 16:07:55 +0100 debugdeltachain: use the symbolic constant to access entry information
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 16:07:55 +0100] rev 49240
debugdeltachain: use the symbolic constant to access entry information This is more robust and easier to read
Wed, 18 May 2022 15:55:14 +0100 debugdeltachain: distinct between snapshot and "other" diffs
Pierre-Yves David <pierre-yves.david@octobus.net> [Wed, 18 May 2022 15:55:14 +0100] rev 49239
debugdeltachain: distinct between snapshot and "other" diffs Snapshot are expected to be healthy behavior, while "other" is a bit more suspicious. So we distinct between the two to make it easier to inspect repositories.
Wed, 25 May 2022 13:28:24 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Wed, 25 May 2022 13:28:24 +0200] rev 49238
branching: merge stable into default
Tue, 24 May 2022 19:09:24 +0400 revlog: use appropriate format char for int ("i" instead of "I")
Anton Shestakov <av6@dwimlabs.net> [Tue, 24 May 2022 19:09:24 +0400] rev 49237
revlog: use appropriate format char for int ("i" instead of "I") From https://docs.python.org/3.8/c-api/arg.html#numbers : i (int) [int] Convert a Python integer to a plain C int. I (int) [unsigned int] Convert a Python integer to a C unsigned int, without overflow checking.
Tue, 17 May 2022 21:49:36 +0400 revlog: use %d to format int instead of %lu (issue6565)
Anton Shestakov <av6@dwimlabs.net> [Tue, 17 May 2022 21:49:36 +0400] rev 49236
revlog: use %d to format int instead of %lu (issue6565) The issue says gcc warns that the data types don't match. I couldn't reproduce the warning locally for some reason, but this patch shouldn't break things. Maybe %lu was simply a copy-paste error from 6b1eae313b2f (https://phab.mercurial-scm.org/D10625).
Tue, 06 Apr 2021 03:24:26 +0200 filelog: show the passed argument on error
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 06 Apr 2021 03:24:26 +0200] rev 49235
filelog: show the passed argument on error The error now do more than stating what it need. It also state what it got.
Tue, 06 Apr 2021 03:23:46 +0200 manifest: improve error message in case for tree manifest
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 06 Apr 2021 03:23:46 +0200] rev 49234
manifest: improve error message in case for tree manifest In the case where tree manifest is not enabled but we still receive an sub directory information for the manifest. The error now inform which sub-directory was passed.
Fri, 13 May 2022 15:19:57 +0200 branchmap: use a context manager when writing the branchmap
Pierre-Yves David <pierre-yves.david@octobus.net> [Fri, 13 May 2022 15:19:57 +0200] rev 49233
branchmap: use a context manager when writing the branchmap This is cleaner and safer. The previous code date from long before we had context manager available.
Tue, 05 Apr 2022 05:01:58 +0200 auto-upgrade: skip the operation if the repository cannot be locked
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 05:01:58 +0200] rev 49232
auto-upgrade: skip the operation if the repository cannot be locked This seems like a fine default behavior for now. If some users wants something more aggressive we can make the behavior configurable in the future. Differential Revision: https://phab.mercurial-scm.org/D12619
Tue, 05 Apr 2022 04:45:48 +0200 auto-upgrade: add a test case where the repository is already locked
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 05 Apr 2022 04:45:48 +0200] rev 49231
auto-upgrade: add a test case where the repository is already locked This show the current behavior when the repository to auto-upgrade is already locked. The current behavior is to abort, which is probably not great. Now that we have a proper test, we can think about the behavior we wants in a later tests. Differential Revision: https://phab.mercurial-scm.org/D12618
(0) -30000 -10000 -3000 -1000 -192 +192 +1000 tip