- Mar 10, 2025
-
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
We previously did bump the gRPC version, but did not regenerate the stubs
-
Georges Racinet authored
This will allow us to run CI on Debian 12 (at last!), hence with a recent enougth Git (2.39) to have the `patch-id --verbatim` option. A consequence of that is that we no longer can install system-wide, hence we have to use python (and pytest) from a virtualenv setup in the base image.
-
- Mar 07, 2025
-
-
Georges Racinet authored
Part of heptapod#2078. As we are about to shift the future branch to be default and all changes in Heptapod 17.8 were made after the shit of the stable series, there is no point merging into the default branch first.
-
Georges Racinet authored
The `DiffService.GetPatchID` gRPC method now invokes Git with `--verbatim` by default (feature flag is activate by default).
-
- Mar 06, 2025
-
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
-
- Mar 01, 2025
-
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
These fixes landed by error on the `stable` branch after heptapod#2069 (they should have been rebased to `oldstable`)
-
Georges Racinet authored
Because the reservation logic would update the timestamps, we have some cases in production when the garbage collecting logic would not deduplicate redundant roster lines, hence we now perfom deduplication in all cases.
-
- Feb 28, 2025
-
-
Georges Racinet authored
As parent changeset demonstrates, it's far too easy to develop for `py.path` instead of `pathlib`.
-
Georges Racinet authored
The fact that the pytest fixture is not exactly a `pathlib.Path` had blissfully us use the wrong API.
-
- Feb 26, 2025
-
-
Georges Racinet authored
-
Georges Racinet authored
-
- Feb 25, 2025
-
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
As we have the new Housekeeping method, and our minor version is not in sync with Gitaly's yet, we bump the minor version. This is probably the last time we have the luxury to do that.
-
- Feb 24, 2025
-
-
Georges Racinet authored
We chose to make a single gRPC method with various subtasks, to leave the control to the Rails app (first instalment likely to run all subtasks) and make it easier to add new tasks in the future than implementing new methods (less boilerplate left)
-
Georges Racinet authored
As the docstring explains we've seen large stray working directories, not listed in the roster file and that is a real problem that should be handled by the housekeeping when it is plugged in.
-
Georges Racinet authored
If a working directory is listed in the roster but actually missing, this is an easily fixed inconsistency and we must not put it back in the roster
-
Georges Racinet authored
Because some working directories are very large, their removal can take some time. We do not want to keep the lock on the roster file much longer than reserve/release take. Hence we switch to a multi-phase logic. In the first phase, the working directories scheduled for deletion are actually reserved, so that concurrent workers will ignore them. Once the removals are done, we lock again to remove them from the roster.
-
Georges Racinet authored
Using `dict`s in `to_remove` values, we avoid attempting the removal of duplicated lines several times, and thus putting them back in the roster file.
-
Georges Racinet authored
In `release_workdirs`, the matching line was written twice, explaining the growth. However fixing that bug uncovered another one: in case two different working dirs were suitable in `roster_branch_match`, the first was actually discarded from the roster. This fixes both bugs, but does not clean up existing roster files, some of which can have thousands of lines instead of the expected couple.
-
- Feb 21, 2025
-
-
Georges Racinet authored
-
- Feb 20, 2025
-
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
In `test_mercurial_aux_git`, the Git repo we are making a bundle for is small, hence we only have one response in the stream, but the code is ready for bigger ones.
-
- Feb 18, 2025
-
-
Georges Racinet authored
Fairly straightforward, thanks to the `walkdir` crate. It is worth noticing that `du -ks` gives a different result (92kB), whereas `du -bs` gives 27kB, same as our implementation on our dev rig. It seems to be that `du -k` rounds up each file to 4kB (most probably block size), and it also seems to differ on system context.
-
- Feb 17, 2025
-
-
Georges Racinet authored
-
- Feb 16, 2025
-
-
Georges Racinet authored
As previously done for bundle generation, we're defining a specific method in `MercurialAuxGitService` and have `RepositoryService` detect automatically that it is working for an auxiliary Git repository, with the former giving a clear API for the client side (used in export/import) and the latter being the only option we have for backups restoration (via `gitaly-backup`). In `RepositoryService`, we had to implement `RemoveRepository`, `SetCustomHooks` and `FetchBundle` for the `gitaly-backup` restoration to work. We also did `CreateRepositoryFromBundle` for completeness. At this point, backup/restore and export/import do work with auxiliary Git repositories, yet it is validated by functional tests only and we didn't implement `CreateBundleFromRefsList`. This generally provides also the harness for handling all of this via RHGitaly, instead of HGitaly or subprocess spawning from the Rails application. All methods already have their HGitaly fallbacks, except `CreateRepositoryFromBundle` because it is a streaming request and it will be simpler to implement it rather than the fallback.
-