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.
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 tip