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
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.
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.
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.
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.
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.
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.
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.
Arseniy Alekseyev <aalekseyev@janestreet.com> [Thu, 25 Aug 2022 16:53:56 +0100] rev 49406
tests: remove flakiness in a time-dependent test
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.
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`.
Gregory Szorc <gregory.szorc@gmail.com> [Sun, 17 Jul 2022 15:37:34 -0700] rev 49403
contrib: update Mercurial install in bootstrap environment
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
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
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`.
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.
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.
Raphaël Gomès <rgomes@octobus.net> [Thu, 28 Jul 2022 14:11:53 +0200] rev 49397
Added signature for changeset f69bffd00abe
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
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
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.
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}`
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.
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.
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.
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.
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.
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.
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
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
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'
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'
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)
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'.
Anton Shestakov <av6@dwimlabs.net> [Mon, 04 Jul 2022 15:01:52 +0400] rev 49380
git: make sure to fsdecode bookmark names everywhere (issue6723)
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:50:32 +0200] rev 49379
Added signature for changeset 094a5fa3cf52
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:50:13 +0200] rev 49378
Added tag 6.2 for changeset 094a5fa3cf52
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.
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.
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.
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.
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.
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.
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
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
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.
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 20:44:52 +0200] rev 49368
relnotes: add 6.2rc0
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 18:07:09 +0200] rev 49367
Added signature for changeset 288de6f5d724
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 18:06:55 +0200] rev 49366
Added tag 6.2rc0 for changeset 288de6f5d724
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:28:54 +0200] rev 49365
branching: merge default into stable
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.
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.
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.
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
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Matt Harbison <matt_harbison@yahoo.com> [Mon, 13 Jun 2022 11:20:57 -0400] rev 49325
typing: add a missing suppression directive for `msvcrt`
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.
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
Raphaël Gomès <rgomes@octobus.net> [Thu, 02 Jun 2022 16:56:39 +0200] rev 49322
relnotes: add 6.1.3
Manuel Jacob <me@manueljacob.de> [Wed, 01 Jun 2022 01:45:49 +0200] rev 49321
cleanup: return directly instead of assigning variable
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.
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.