- Apr 18, 2025
-
-
Pierre-Yves David authored
-
- Apr 16, 2025
-
-
Pierre-Yves David authored
It turns out that dagop host two quit different type of code. - some low level graph algorith that don't know much about Mercurial - some high level function that know about smartset, filectx and changectx. We split the module in two to avoid cycle created by the need for various intermediate module to access the low level function while being later used by the higher level content. This move the giant cycle from 108 to 104 elements, a small step.
-
Pierre-Yves David authored
We don't need to go through the richer function and to build a baseset. We can directly call the changelog method.
-
Pierre-Yves David authored
Otherwise we do work for nothing.
-
- Apr 17, 2025
-
-
Pierre-Yves David authored
We have to adjust the timestamp to set `ninja` on the right track. The cache is only generated for commit on the default branch to make sure it use a commit that is known to other run (and quite recently generated).
-
Pierre-Yves David authored
As we are not running around permission nor modifying the source from a non-root user, we don't need this step anymore.
-
Pierre-Yves David authored
The new image no longer use pyenv.
-
- Apr 16, 2025
-
-
Pierre-Yves David authored
These images are smaller an easier to maintain.
-
- Apr 15, 2025
-
-
Pierre-Yves David authored
`make local` would copy the compiled extension in place, but I don't think Mercurial does much use of them so keeping seems simple seems better. It would speed up the CI job a bit and help keeping the associated CI image slim.
-
- Apr 16, 2025
-
-
Pierre-Yves David authored
BinaryIO is a superclass of IO[bytes] so it should be fine.
-
Pierre-Yves David authored
This will help pytype know what we are talking about even without having a __version__ file around. note: this was already done for __module_policy__ so, do not expect a change about it.
-
Pierre-Yves David authored
This will help keeping an eye on doom cycle.
-
Pierre-Yves David authored
This will help us to spot the import cycle that make pytype slower.
-
- Apr 15, 2025
-
-
Pierre-Yves David authored
There are no type-stub to setup anymore.
-
Pierre-Yves David authored
It does not hurt to have them around and it simplify the pytype setup.
-
Pierre-Yves David authored
They are already included in the installation
-
- Mar 07, 2025
-
-
Arun Kulshreshtha authored
-
- Apr 16, 2025
-
-
Pierre-Yves David authored
The Windows test are very flaky, let always re run failed test after the first run. This should help the overall flakiness making the windows test unreliable. This will make job with many legitimate failures slower to report their errors, but it helps the other cases so much that this is worse it.
-
- Apr 07, 2025
-
-
Mitchell Kember authored
This changes all the let-else statements on FileId to instead use an exhaustive match to make it more clear that the "else" case is Wdir.
-
Mitchell Kember authored
This makes rhg annotate do ancestor checks for all filelog revs. Previously it only did so for revs that would actually appear in the output. While this often improves performance, sometimes it hurts it (in a few rare cases making it slower overall than Python). The reason is that linkrev adjustment goes in reverse topological order such that each changelog scan picks up where its child (or other descendant) left off. By skipping revs that don't appear in the output, we do fewer scans, but the scans are longer. If we do "unnecessary" ancestor checks (which are comparatively cheap), we get better descendants to start those changelog scans from. That's what this change does. Here are some poulpe benchmarks on the jane repo. The "file-with-long-history" examples were chosen by the setup script. The "was-faster-in-python" files I manually selected. The "50-random-files" is from `hg files | shuf -n50`. ### data-env-vars.name = jane ### benchmark.name = hg.command.annotate ### bin-env-vars.hg.flavor = rhg ### benchmark.variants.files-as-text = no ### benchmark.variants.follow-copies = yes ### benchmark.variants.listed = default ## benchmark.variants.files = 50-random-files.list ce5d61140f14: 167.293994 ~~~~~ 49568c6ba019: 98.502573 (-41.12%, -68.79) ## benchmark.variants.files = file-with-long-history.a ce5d61140f14: 49.005604 ~~~~~ 49568c6ba019: 24.821525 (-49.35%, -24.18) ## benchmark.variants.files = file-with-long-history.b ce5d61140f14: 48.959987 ~~~~~ 49568c6ba019: 25.059625 (-48.82%, -23.90) ## benchmark.variants.files = file-with-long-history.c ce5d61140f14: 22.892105 ~~~~~ 49568c6ba019: 21.788369 (-4.82%, -1.10) ## benchmark.variants.files = was-faster-in-python.a ce5d61140f14: 35.160262 ~~~~~ 49568c6ba019: 0.749528 (-97.87%, -34.41) ## benchmark.variants.files = was-faster-in-python.b ce5d61140f14: 34.236378 ~~~~~ 49568c6ba019: 0.559009 (-98.37%, -33.68) ## benchmark.variants.files = was-faster-in-python.c ce5d61140f14: 22.803029 ~~~~~ 49568c6ba019: 1.257608 (-94.48%, -21.55) ## benchmark.variants.files = was-faster-in-python.d ce5d61140f14: 18.779003 ~~~~~ 49568c6ba019: 0.960363 (-94.89%, -17.82) ## benchmark.variants.files = was-faster-in-python.e ce5d61140f14: 18.147231 ~~~~~ 49568c6ba019: 0.698075 (-96.15%, -17.45)
-
Mitchell Kember authored
This adds a test to test-annotate.t to demonstrate a difference in behavior between Python and Rust. Currently Rust skips linkrev adjustment for revisions that don't appear in the output. This has a few consequences: 1. It's usually faster because it skips work. 2. It's sometimes slower because it does longer changelog scans. 3. It produces different results in an edge case. This changeset demonstrates (3). In a follow-up change I will fix (2) and (3) while preserving (1).
-
- Apr 16, 2025
-
-
Pierre-Yves David authored
The rust wheel needs to compile a bunch of Rust and can use the higher parallelism.
-
- Mar 03, 2025
-
-
Mitchell Kember authored
This adds support for the json template in rhg annotate. All other -T/--template values continue to fallback to Python. I matched the format of the Python output so all existing tests pass. This was not that hard to do printing JSON manually. The only thing I use serde_json for is to escape strings.
-
- Mar 06, 2025
-
-
Mitchell Kember authored
I had to restructure the annotation formatting to support multiple templates, so I split this into a separate change.
-
- Mar 18, 2025
-
-
Mitchell Kember authored
This moves around code in rust/rhg/src/commands/annotate.rs to make the refactor coming after this easier to review. I did it just by copying and pasting code, and adding a `print_output` function that contains the last half of `run`.
-
- Mar 04, 2025
-
-
Mitchell Kember authored
This will be used for rhg annotate -Tjson.
-
- Mar 06, 2025
-
-
Mitchell Kember authored
This adds a test to test-annotate.t for annotating a non-UTF8 file with -Tjson. The current behavior is incorrect and outputs invalid JSON. I plan to fix the behavior in rhg annotate.
-
- Apr 14, 2025
-
-
Arseniy Alekseyev authored
In the interest of keeping the code of `main_with_result` clean, move all alias-related stuff into a separate function. Also, add a comment explaining why we think `trailing_args` behavior is good enough.
-
- Apr 01, 2025
-
-
Mitchell Kember authored
This adds rhg support for resolving aliases. It does not yet support shell aliases (starting with "!") or interpolation ("$1", "$@", etc.). It splits words in alias definitions using the shlex crate.
-
- Apr 02, 2025
-
-
Mitchell Kember authored
This matches Python behavior.
-
Mitchell Kember authored
This refactors the EarlyArgs parsing. This is motivated by a follow-up change to support aliases, since it needs to check if an alias definition has any early flags and fail if so, mentioning the flags in the error message.
-
- Apr 01, 2025
-
-
Mitchell Kember authored
This changes ConfigItem to be an indexmap::IndexMap instead of a HashMap, so that it preserves insertion order. It also changes Config::iter_section to return keys in that order (lowest to highest precedence). For all existing uses of iter_section, the order doesn't appear to matter. This is motivated by a follow-up change that will implement support for aliases in rhg, where the order of alias definitions matters.
-
- Apr 16, 2025
-
-
Pierre-Yves David authored
-
Pierre-Yves David authored
This creates issue while reusing resource otherwise.
-
- Mar 19, 2025
-
-
Pierre-Yves David authored
It make it easy to find the source of share.
-
Pierre-Yves David authored
This will be useful to find the shared repository in `hg root`. See next changeset for usage.
-
Pierre-Yves David authored
This method allow to find a repository from an arbitrary directory. This will be useful to find the repository associated with a store.
-
- Mar 20, 2025
-
-
Raphaël Gomès authored
This was probably never a big deal in practice since we don't do any changelog modification in pure Rust yet.
-
- Mar 27, 2024
-
-
Pierre-Yves David authored
This would avoid puzzled used wondering if anything happened
-
- Jan 29, 2025
-
-
Pierre-Yves David authored
This while look break when the process finish or when the time out is reached. So we need to check why we existed the loop. Not sure how it has not created more problem so far.
-