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 49406
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 49405
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 49404
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 49403
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 49402
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 49401
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 49400
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 49399
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 49398
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 49397
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
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 49396
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 49395
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 49394
setup: stop shadowing the builtin `dir` symbol I hit this when debugging what's available on the compiler.
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 49393
mergestate: action name was str Apparently the standard for them is still to use byte strings. Found while looking at something else
Mon, 18 Jul 2022 03:29:53 -0400 subrepo: avoid opening console window for non-native subrepos on Windows
derekbrowncmu@gmail.com [Mon, 18 Jul 2022 03:29:53 -0400] rev 49392
subrepo: avoid opening console window for non-native subrepos on Windows Prevent annoying command prompt windows popping up when using TortoiseHG with Git and SVN subrepos by passing creationflags=subprocess.CREATE_NO_WINDOW to subprocess.Popen.
Wed, 13 Jul 2022 17:13:33 -0400 ci: bump pytype to 2022.03.29
Matt Harbison <matt_harbison@yahoo.com> [Wed, 13 Jul 2022 17:13:33 -0400] rev 49391
ci: bump pytype to 2022.03.29 This is as far as we can go without running into issues with the vendored `attr` package. I tried updating that to the latest, and not only did it not fix the issue, but test-util.py failed due to some poking at `attr` internals that apparently is no longer valid. The `libcst` package is now pinned to what I have locally because trying to install the latest (0.4.7) complains that it can't find the Rust compiler. We should probably use a requirements file instead (and/or figure out why it can't find the Rust compiler), but I don't feel like dealing with another side quest.
Wed, 13 Jul 2022 12:47:40 -0400 typing: suppress a few attribute errors in url.py
Matt Harbison <matt_harbison@yahoo.com> [Wed, 13 Jul 2022 12:47:40 -0400] rev 49390
typing: suppress a few attribute errors in url.py These are newly detected by pytype 2022.03.21. Not sure what is going on here- `realhostport` and `headers` are added outside of the constructor, so that makes sense. But PyCharm also thinks the private methods don't exist, though when clicking through the class hierarchy, it shows in the py3.9 source code.
Wed, 13 Jul 2022 11:30:13 -0400 typing: suppress a few pyi-errors with more recent pytype
Matt Harbison <matt_harbison@yahoo.com> [Wed, 13 Jul 2022 11:30:13 -0400] rev 49389
typing: suppress a few pyi-errors with more recent pytype Not sure what's going on here, but these were flagged with pytype 2022.03.21. We can't update to something much more recent, because newer versions complain about various `attr` uses.
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 49388
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 49387
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 49386
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 49385
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 49384
git: make sure to fsdecode bookmark names everywhere (issue6723)
Wed, 13 Jul 2022 18:27:40 +0200 sslutil: another use proper attribute to select python 3.7+
Ondrej Pohorelsky <opohorel@redhat.com> [Wed, 13 Jul 2022 18:27:40 +0200] rev 49383
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+
Mathias De Mare <mathias.de_mare@nokia.com> [Tue, 12 Jul 2022 15:59:53 +0200] rev 49382
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'
Mon, 11 Jul 2022 09:54:40 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:54:40 +0200] rev 49381
branching: merge stable into default
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 49380
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 49379
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 49378
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 49377
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 49376
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 49375
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 49374
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 49373
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 49372
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 49371
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 49370
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 49369
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 49368
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 49367
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 49366
branching: merge default into stable
Thu, 16 Jun 2022 15:20:48 +0200 branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:20:48 +0200] rev 49365
branching: merge stable into default
Thu, 16 Jun 2022 15:15:03 +0200 relnotes: add 6.1.3 and 6.1.4 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:15:03 +0200] rev 49364
relnotes: add 6.1.3 and 6.1.4
Thu, 16 Jun 2022 15:09:59 +0200 Added signature for changeset 0cc5f74ff7f0 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:09:59 +0200] rev 49363
Added signature for changeset 0cc5f74ff7f0
Thu, 16 Jun 2022 15:09:46 +0200 Added tag 6.1.4 for changeset 0cc5f74ff7f0 stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:09:46 +0200] rev 49362
Added tag 6.1.4 for changeset 0cc5f74ff7f0
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 49361
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 49360
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 49359
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 49358
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 49357
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 49356
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 49355
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 49354
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 49353
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 49352
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 49351
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 49350
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 49349
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 49348
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 49347
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 49346
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 49345
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 11:26:18 +0200 purge: prevent a silly crash with --confirm --files stable 6.1.4
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 11:26:18 +0200] rev 49344
purge: prevent a silly crash with --confirm --files if --files is passed, there was no directory to checks and `msg` was undefined. This is now fixed and tested.
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 49343
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 49342
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 49341
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 49340
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 49339
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 49338
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, 08 Jun 2022 19:15:58 +0200 rust-status: don't trigger dirstate v1 rewrite when only v2 data is changed stable
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 19:15:58 +0200] rev 49337
rust-status: don't trigger dirstate v1 rewrite when only v2 data is changed The assumption that we need to rewrite (or append to) the dirstate if the ignore pattern hash has changed or if any cached directory mtimes have changed is only valid when using dirstate-v2. In dirstate-v1, neither of these things are written to disk.
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 49336
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 49335
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 49334
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 49333
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 49332
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 49331
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 49330
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 49329
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 49328
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 49327
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 49326
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 49325
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 49324
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 49323
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 49322
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 49321
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.
Tue, 14 Jun 2022 04:04:08 +0200 commit: allow to close branch when committing change over a closed head stable
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 04:04:08 +0200] rev 49320
commit: allow to close branch when committing change over a closed head Otherwise, an explicit other commit become necessary, which seems both silly and verbose. This is useful when merging closed heads on the same branches, for example when merging multiple repositories together.
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 49319
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 49318
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 49317
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 49316
relnotes: add 6.1.3
Thu, 12 May 2022 13:53:50 +0400 logcmdutil: use the same data as {file*} template keywords (issue6642) stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 12 May 2022 13:53:50 +0400] rev 49315
logcmdutil: use the same data as {file*} template keywords (issue6642) Since 0c72eddb4be5 template keywords that show files use a different source of data than ctx.p1().status(ctx). These two functions in logcmdutil also show file lists when needed (e.g. log with --debug flag), but previously they used the old way of just looking at status compared to p1 and it resulted in differences between e.g. hg log --debug and hg log -T '{file*}'. test-phases.t needs an adjustment because 7 is a merge commit of two topological branches and one of them introduces files C, D and E.
Thu, 12 May 2022 13:52:10 +0400 tests: show that hg log --debug output differs from {file*} template keywords stable
Anton Shestakov <av6@dwimlabs.net> [Thu, 12 May 2022 13:52:10 +0400] rev 49314
tests: show that hg log --debug output differs from {file*} template keywords hg log --debug -T xml doesn't differ, but let's test it because we can.
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 49313
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 49312
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 49311
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 49310
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 49309
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 49308
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 49307
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 49306
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 49305
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 49304
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 49303
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 49302
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 49301
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 49300
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 49299
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 49298
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 49297
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 49296
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 49295
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 49294
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 49293
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 49292
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 49291
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 49290
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 49289
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 49288
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 49287
py3: use `zip()` instead of trying to use `itertools.izip()`
(0) -30000 -10000 -3000 -1000 -120 +120 +1000 tip