- Feb 15, 2024
-
-
Jordi Gutiérrez Hermoso authored
There's no need to move anything to patch.py. The uiheader class only has methods relevant to crecord and overrides __getattr__ in order to use `patch.header` objects as a sort of mixin.
-
Jordi Gutiérrez Hermoso authored
This just simplifies the API a bit so it matches `nextitem` and I can handle both nextitem and previtem symmetrically.
-
- Feb 14, 2024
-
-
Jordi Gutiérrez Hermoso authored
The __import__ thingie needs a string, not a bytestring. Guess I'm the only one who uses this once in a while and noticed it was broken.
-
Jordi Gutiérrez Hermoso authored
Just some light proofreading.
-
- Feb 13, 2024
-
-
Martin von Zweigbergk authored
We had some wrapped lines without blank lines between, which made the runrst script think the list was not a list and it got confused about the indentation. I added blank lines, and also some other minor styling for consistency with the rest of the file.
-
- Jan 10, 2024
-
-
Arseniy Alekseyev authored
A typical revbranchmap usage is: - load the entire revbranchmap file into memory - maybe do a few lookups - add a few bytes to it - write the addition to disk There's no reason to load the entire revbranchmap into memory. We can split it into a large immutable prefix and a mutable suffix, and then memorymap the prefix, thus saving all the useless loading. Benchmarking on some real-world pushes suggests that out of ~100s server-side push handling revbranchcache handling is responsible for: * ~7s with no change * ~1.3s with the change, without mmap * 0.04s with the change, with mmap
-
- Feb 02, 2024
-
-
Manuel Jacob authored
While not required in the core test suite in the moment, these could be useful in the future or for extensions. For example, Python 3.12 removed distutils and it might make sense to differentiate based on that.
-
Manuel Jacob authored
I think it’s a really bad idea to use floats for version numbers. One problem is that 3.10 is the same as 3.1.
-
- Feb 03, 2024
-
-
Manuel Jacob authored
-
- Feb 02, 2024
-
-
Manuel Jacob authored
The previous logic tried to find the directory containing BaseHTTPServer, which didn’t work as indended because it was only present on Python 2. Instead, the argparse module is used now.
-
Manuel Jacob authored
-
- Feb 12, 2024
-
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
Raphaël Gomès authored
-
- Jan 08, 2024
-
-
Arseniy Alekseyev authored
It turns out (not too shockingly!) the kernel sometimes has some work to do, perhaps at the very least context-switching, so asserting the system time is 0.000000 doesn't work.
-
- Feb 02, 2024
-
-
Jordi Gutiérrez Hermoso authored
The refactor in 4a73df6eb67d accidentally forgot to transform the opts argument for walkopts into a byteskwargs. This resulted in its options being ignored. In particular, the -X/-I pair of options was missing. A simple fix restores its usage. Tests included, of course.
-
- Jan 30, 2024
-
-
Arun Kulshreshtha authored
-
- Jan 24, 2024
-
-
Anton Shestakov authored
Sometimes the systems that run our test suite don't have enough entropy and they cannot produce target file of the expected size using /dev/random, which results in test failures. Switching to /dev/urandom would give us way more available data at the cost of it being less "random", but we don't really need to use entropy for this task at all, since we only care if the file size after compression is big enough to not be stored inline in the revlog. So let's use something that we already have used to generate this kind of data in other tests.
-
Anton Shestakov authored
This was previously only used in test-revlog-delta-find.t, but it will be useful (and used) in other tests that might need to generate poorly-compressible files.
-
- Nov 23, 2023
-
-
Pierre-Yves David authored
Having more information is better, so we pass it directly.
-
- Jan 07, 2024
-
-
Pierre-Yves David authored
Lets move the specialized code in the specialized class.
-
Pierre-Yves David authored
Lets move the specialized code in the specialized class.
-
Pierre-Yves David authored
We now have things sliced small enough to have two class that use different `_iter_groups` implementation to encode their different logic. The filtering code remains to be moved, but I would rather keep this changeset simple and move them in the next.
-
- Nov 23, 2023
-
-
Pierre-Yves David authored
The refining logic only applies to the snapshot logic, and this is now all contained in a dedicated method. Along the way, we drop the refined_groups // raw_groups layer as they no longer make sense. The result is a more explicit `iter_groups` method. This conclude the splitting and simplification of the groups generation. We are now ready to dispatch this in more diverse classes.
-
Pierre-Yves David authored
That logic is complicated enough that is is worth puting in its own function. Another method will be introduced in the next changeset to deal with the actual refining.
-
Pierre-Yves David authored
After splitting the filtering, and with the `_candidate_groups` layer removed, we can start splitting the group generation too. This helps to organize this code and make it easier to modifying the future.
-
Pierre-Yves David authored
After splitting the filtering, and with the `_candidate_groups` layer removed, we can start splitting the group generation too. This helps to organize this code and make it easier to modifying the future.
-
- Jan 07, 2024
-
-
Pierre-Yves David authored
We can remove this from the general logic path and directly deal with this corner case early. This result in a small change in test-generaldelta.t as it turns out that: - at commit time we (sometimes) precompute a delta against p1 and pass it as the cached delta. - since cached delta where going through the same filtering as everything, we could "optimize" the base if it applied to an empty delta, resulting in not using the pre-computed delta. The simpler logic fix the second item, making the cached delta base always actually tested when requested. Note that the computation of a fast delta against p1 only is questionable, but looking into that is out of scope for this series.
-
Pierre-Yves David authored
We have enough pieces to remove this generator and directly bear it load using the underlying object.
-
Pierre-Yves David authored
This avoid assuming a changeset is a snapshot when it is actually something simpler.
-
Pierre-Yves David authored
Being more explicit about what we are doing is going to be useful. We actually start making use of it in later changesets.
-
- Nov 23, 2023
-
-
Pierre-Yves David authored
Seems like it was never put to use, so lets simply remove it for now.
-
- Jan 07, 2024
-
-
Pierre-Yves David authored
For now, we introduce some very simple variant, but they are still useful to display how having the class can helps keeping the simple case simple and their special case out of more advanced logic.
-
Pierre-Yves David authored
This prepare the introduction of specialized the class in the next changesets.
-
Pierre-Yves David authored
Since the function is all about snapshot, we can safely use an early return and make the result simpler.
-
- Jan 06, 2024
-
-
Pierre-Yves David authored
Nothing change except the code location. This greatly helps readability of the next future diff,
-
- Jan 04, 2024
-
-
Pierre-Yves David authored
Same logic as for candidate filtering, we group code into related sub method. This will help clarifying later patches as some logic is pre-splitted
-
Pierre-Yves David authored
We move the comment closer to the code it describ and we compute an intermediate value without using the `textlen` variable, as it will stop being defined in a future patch. This will clarify future patches.
-
Pierre-Yves David authored
This will clarify future patches by regrouping related logic before larger movement.
-