merge stable into default
- Apr 17, 2024
-
-
Raphaël Gomès authoredee1b648e4453
-
- Apr 04, 2024
-
-
Arseniy Alekseyev authored
Previously flush was happening due to Python finalizer being run on `BufferedWriter`. With upgrade to Python 3.11 this started randomly failing. My guess is that the finalizer on the raw `FileIO` object may be running before the finalizer of `BufferedWriter` has a chance to run. At any rate, since we're not relying on finalizers in the happy case we should also not rely on them in case of exception.
13c004b54cbe
-
- Apr 15, 2024
-
-
Arseniy Alekseyev authored
My previous interpretation of "Recursive" was too relaxed: I thought it instructed the caller to do something like this: > you can stop calling `visit_children_set` because you'll need to descend into > every directory recursively, but you should still check every file if it > matches or not Whereas the real instruction seems to be: > I guarantee that everything in this subtree matches, you can stop > querying the matcher for all files and dirs altogether. The evidence to support this: - the test actually passes with the stronger invariant, revealing no exceptions from this rule - the implementation of `visit_children_set` for `DifferenceMatcher` clearly relies on this requirement, so it must hold for that not to lead to bugs.
74230abb2504
-
- Apr 12, 2024
-
-
Arseniy Alekseyev authored
The fix is checked by `test_pattern_matcher_visit_children_set` test, which is what caught the bug in the first place, but also by an end-to-end test that I made for this purpose. Accept the new results of Cargo tests Many of these were already annotated with "FIXME", which is a good sign.
b39057b713b1 -
Arseniy Alekseyev authored
This fixes just the Python side, the fix for the rust side will follow shortly.
b32c3146ec34 -
Arseniy Alekseyev authored2a89d2f6336f
-
Arseniy Alekseyev authored
This makes it a bit more efficient (avoid a computation in case of early return), and in my opinion clearer.
cae0be933434 -
Arseniy Alekseyev authored
This brings the rust output in line with the Python output.
529a655874fb -
Arseniy Alekseyev authored
Concretely, `rootfilesin` is completely broken with respect to `visit_children_set` optimization.
95c083d21ac6
-
- Apr 11, 2024
-
-
Arseniy Alekseyev authored
The tests this patch are adding have the form of formal spec in invariants::visit_children_set::holds, and then a series of checks that all examples must satisfy this formal spec. I tried to make the spec consistent with how this function is used and how it was originally conceived. This is in conflict with how it's documented in Rust. Some of the implementations also fail to implement this spec, which leads to bugs, in particular when complicated patterns are used with `hg status`.
f5c367dc6541 -
Arseniy Alekseyev authored
The bug is in [visit_children_set], will be elaborated on in follow-up changes.
b861d913e7ec
-
- Apr 04, 2024
-
-
Pierre-Yves David authored
Before this changesets "v2;revbranchcache=no" would actually request the addition for a revbranchcache part as the non-empty string `"0"` is `True`
eac84af0c8cc -
Pierre-Yves David authored
It is possible to produce a bundle without changegroup. For example if we want to only send phases or obsolescence information. However that lead to crash for command that identifies bundle content. So we fix that. The test will come in the next changesets, when we fix another bug preventing to generate such bundle by hand.
7752cf4f64cc
-
- Apr 03, 2024
-
-
Pierre-Yves David authored
This help to understand what is going wrong when things goes wrong.
ee132657647d
-