- Mar 14, 2024
-
-
Raphaël Gomès authored
-
Raphaël Gomès authored
Activating an extension is always a little bit of a chore and the long name, options and "chainsaw" bits are deterrent enough. This also allows us to help the discoverability for people looking for repo "administration" tools, with the widest semantic of "administration".
-
- Mar 13, 2024
-
-
Anton Shestakov authored
This is probably less important now that we dropped Python 2. We do still support Python 3.6 though, and the dictionaries aren't ordered there either (that was a big change that came with 3.7). Still, maybe it's a good idea to sort metadata explicitly.
-
- Mar 11, 2024
-
-
Pierre-Yves David authored
The revlog compression makes a lot of numbers unstable. Since checking revlog compression is not the goal of this test, we disable the compression to get stable numbers. This should avoid wasting more time on this kind of changes in the future.
-
Pierre-Yves David authored
Since the configuration was not explicit, the case stopped testing what it intended to test when the default value changed.
-
Pierre-Yves David authored
The "worker process exited" line have been making the CI flaky for a long time. Lets sort this out.
-
Pierre-Yves David authored
The flakiness on chg is caused by a client that exit faster than the server output log. So actively wait for the server to issue the expected output (with a small timeout)
-
Pierre-Yves David authored
This will prevent the test to be flaky on load.
-
Georges Racinet authored
Extracting this `re_builder()` from `re_matcher()` makes it reusable in more general cases than matching `HgPath` instances and would help reducing code duplication in RHGitaly.
-
Georges Racinet authored
Making this function public should not risk freezing the internal API, and it can be useful for all downstream code that needs to perform glob matching against byte strings, such as RHGitaly where it will be useful to match on branches and tags.
-
- Mar 05, 2024
-
-
Pierre-Yves David authored
This does not need to mutate the index. This is the prime suspect for some RuntimeError raised during some pushes.
-
Pierre-Yves David authored
It does not needs to mutate the index. This is one of the two suspects of RuntimeError being thrown during push.
-
- Feb 29, 2024
-
-
Martin von Zweigbergk authored
We got a bug report where `curses.endwin()` failed with `_curses.error: endwin() returned ERR`. Looking at e306d552dfb1, it seems like we should be able to just remove these calls.
-
- Mar 04, 2024
-
-
Pierre-Yves David authored
See previous commit for rational.
-
Pierre-Yves David authored
This should help people to put configuration in the right section.
-
- Feb 23, 2024
-
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Pierre-Yves David authored
This turned out to make a quite significant difference.
-
Pierre-Yves David authored
That will prevent the user to be presented with a start that pretend to be consistent with the request, but is not.
-
Pierre-Yves David authored
This should prevent and catch some misusage where something else try to touch the repository.
-
Georges Racinet authored
Perhaps we should go just a bit lower level than this `instance()`, since the main added value in our use-case is full path resolution, that we need to do anyway for the rmtree cleanup.
-
Pierre-Yves David authored
This will be relevant for the next improvement of `chainsaw-update`.
-
- Jan 17, 2024
-
-
Georges Racinet authored
Previously, the command would simply state that it was about to break locks, not if there was actually some to break. This version is race-free. It would be also possible to display the content of the lock before hand (not race-free but informative in almost all cases).
-
Georges Racinet authored
It is useful in certain circumstances to know whether vfs.tryunlink() actually removed something or not, be it for logging purposes.
-
- Nov 26, 2022
-
-
Georges Racinet authored
The first provided command is `chainsaw-update`, whose one and single job is to make sure that it will pull, update and purge the target repository, no matter what may be in the way (locks, notably), see docstring for rationale.
-
- Feb 23, 2024
-
-
Pierre-Yves David authored
See rational inline.
-
Pierre-Yves David authored
This is no longer the case since the introduction of the pure Rust Index, and was probably not the case since the MixedIndex itself. So we fix the dedicated attribute value.
-
- Feb 22, 2024
-
-
Raphaël Gomès authored
Turns out this is slightly faster. Sending the results back to Python is still the most costly (like 75% of the time) of the whole method, but it's about as fast as it can be now. hg perf::phases on mozilla-try-2023-03-22 before: 0.267114 after: 0.247101
-
Raphaël Gomès authored
While less memory efficient, using an array is *much* faster than using a HashMap, especially with the default hasher. It even makes the code simpler, so I'm not really sure what I was thinking in the first place, maybe it's more obvious now. This fix a significant performance regression when using the rust version of the code. (however, the C code still outperform rust on this operation) hg perf::phases on mozilla-try-2023-03-22 - 6.6.3: 0.451239 seconds - before: 0.982495 seconds - after: 0.265347 seconds - C code: 0.183241 second
-
- Feb 23, 2024
-
-
Pierre-Yves David authored
This is similar to what we do in retractboundary. There is no need to invalidate the cache if we have everything at hand to update it.
-
Pierre-Yves David authored
In a similar spirit as the rework of retractboundary, the new algorithm is doing an amount of work in the order of magnitude of the amount of changeset that changes phases. (except to find new roots in impacted higher phases if any may exists). This result in a very significant speedup for repository with many old draft like mozilla try. runtime of perf:unbundle for a bundle constaining a single changeset (C code): before 6.7 phase work: 14.497 seconds before this change: 6.311 seconds (-55%) with this change: 2.240 seconds (-85%) Combined with the other patches that fixes the phases computation in the Rust index, the rust code with a persistent nodemap get back to quite interresting performances with 2.026 seconds for the same operation, about 10% faster than the C code.
-
- Feb 22, 2024
-
-
Pierre-Yves David authored
advanceboundary is called the push's unbundle (but not the other unbundle) so advanceboundary did not show up the profile I looked at so far. We start with simple pre-filtering to avoid doing any work if we don't needs too.
-
- Feb 21, 2024
-
-
Pierre-Yves David authored
No need to compute new roots if everything is already in order.
-
Pierre-Yves David authored
We already have the information to update the phase set, so we do so directly instead of invalidating the cache. This show a sizeable speedup in our `perf::unbundle` benchmark on the many-draft mozilla-try repository. ### data-env-vars.name = mozilla-try-2023-03-22-zstd-sparse-revlog # benchmark.name = hg.perf.perf-unbundle # bin-env-vars.hg.flavor = no-rust # bin-env-vars.hg.py-re2-module = default # benchmark.variants.issue6528 = disabled # benchmark.variants.revs = last-10 before: 2.055259 seconds after: 1.887064 seconds (-8.18%) # benchmark.variants.revs = last-100 before: 2.409239 seconds after: 2.222429 seconds (-7.75%) # benchmark.variants.revs = last-1000 before: 3.945648 seconds after: 3.762480 seconds (-4.64%)
-
Pierre-Yves David authored
When the amount of manual walking is small, we update the phases set manually instead of computing them from scratch. This should help small update. The next changesets will make this used more often by reducing the amount of full invalidation we do on roots upgrade. The criteria for using an incremental upgrade are arbitrary, however, it "should never hurt".
-
- Feb 22, 2024
-
-
Pierre-Yves David authored
We are about to increments the set more incrementally in some case, so we need to make a proper shallow copy of it.
-