Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:54:40 +0200] rev 49381
branching: merge stable into default
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:50:32 +0200] rev 49380
Added signature for changeset
094a5fa3cf52
Raphaël Gomès <rgomes@octobus.net> [Mon, 11 Jul 2022 09:50:13 +0200] rev 49379
Added tag 6.2 for changeset
094a5fa3cf52
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.
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.
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.
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.
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.
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.
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
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
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.
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 20:44:52 +0200] rev 49369
relnotes: add 6.2rc0
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 18:07:09 +0200] rev 49368
Added signature for changeset
288de6f5d724
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 18:06:55 +0200] rev 49367
Added tag 6.2rc0 for changeset
288de6f5d724
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:28:54 +0200] rev 49366
branching: merge default into stable
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:20:48 +0200] rev 49365
branching: merge stable into default
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
Raphaël Gomès <rgomes@octobus.net> [Thu, 16 Jun 2022 15:09:59 +0200] rev 49363
Added signature for changeset
0cc5f74ff7f0
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
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.
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.
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.
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
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.
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.
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.
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.
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.
Pierre-Yves David <pierre-yves.david@octobus.net> [Tue, 14 Jun 2022 11:26:18 +0200] rev 49352
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.
Raphaël Gomès <rgomes@octobus.net> [Wed, 08 Jun 2022 18:18:19 +0200] rev 49351
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 49350
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 49349
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 49348
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 49347
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 49346
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 49345
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 49344
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 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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.