- Feb 15, 2022
-
-
Georges Racinet authored
In version 14.6, Gitaly makes it an error to attempt to create a repository if anything already exists at the target path (even broken symlinks). This is worth a minor version change. This deprives us of the way we were triggering actual repository creation errors in tests. To maintain coverage, we're now using the broken symlink trick one step higher in the file hierarchy: on the storage itself. Playing with permissions would not work in CI.
-
Georges Racinet authored
This gRPC error code was not used yet. We will need it for upcoming changes related to Gitaly 14.6
-
- Jan 23, 2022
-
-
Georges Racinet authored
In our CI image, the `gitaly` executable sits right at the top. Moving it back there was an actual choice of ours that we could have reverted, but it feels actually right for the Gitaly home directory in the CI image not to be necessarily a source checkout or carry build intermediate results (to keep it slim). For better flexibility, we introduce a simple discovery that can take care of both. Also, in CI, we have `/usr/local/bin/git`, with the right version: no reason to use the one that Gitaly can build.
-
- Jan 21, 2022
-
-
Georges Racinet authored
The path to the Gitaly executable has changed. Not sure where the built Git with the exact good version was before, but now it is in `_build/deps`. [skip ci]
-
Georges Racinet authored
The `ancestor` revset primitive supports them readily.
-
Georges Racinet authored
Either the arguments (if passed by their SHAs) or the found ancestor (in case of instability) can be obsolete. This method is usually called at Merge Request creation, where obsolescence is uncommon, but it can also be called after export/import and migrations that clear caches, and then the probabilities are much higher.
-
Georges Racinet authored
The separate root was missing
-
- Jan 03, 2022
-
-
Georges Racinet authored
-
Georges Racinet authored
-
- Dec 26, 2021
-
-
Georges Racinet authored
This should not be called on a Mercurial repo, at least until we provide general support for signatures. If that ever happens we'll be happy to have the explicit reference to the issue.
-
Georges Racinet authored
See #90
-
Georges Racinet authored
This makes it easier to check that we don't miss any method (and we do miss two)
-
Georges Racinet authored
This is enough to bump the minor version, underlining the divergence with Heptapod 0.27. A few Git-centric disappear and the only significant change for us is the new `RefService.FindRefsByOID` method (see #89). On the Rails side, `FindRefsByOID` is exposed as `Repository#refs_by_oid` whose only caller is `Commit#first_ref_by_oid`, itself used in v14.5.2 only in the Jira integration and behind a feature flag.
-
- Nov 26, 2021
-
-
Georges Racinet authored
-
- Nov 22, 2021
-
-
Georges Racinet authored
-
Georges Racinet authored
- we want `PeerInitException` to be about initialization of peer only. This entails a few requests already (capabilities, etc.) - we need to explicitely catch all other errors in `Push()`. I actually believe that `grpc` would convert every uncatched error into an `INTERNAL`, so that the server does not stop, but it's best not to depend on it, and it gives us a way to have a more explicit message (error was not in the push itself)
-
- Nov 20, 2021
-
-
Georges Racinet authored
The GitLab sync would need to get user information to ask for permission (pre-receive hook) and to send resulting information (post-receive hook). This would require changing a bunch of internal APIs in the Rails application for the `hg-push` mirror update use case (currently the only one). Furthermore, the post-receive hook would in turn trigger an update of the `hg-push` remote mirror, resulting in effect in an infinite loop of pushes (we've witnessed the state maintainer `pretxnclose` Mercurial hook running even if no auto publication occurred). This can be improved later on, but for now, we'll make the push effectively read-only by disabling auto publication, and that allows us to unplug the GitLab state maintainer (`heptapod_sync`). Users of `hg-push` mirrors will see an explicit message in the mirror settings page in the case where the push would have been publishing. Chances are that publication by the mirrorring would have been very unwelcome anyway (note also that in its first incarnation, the Rails app won't expose the `include_drafts` boolean).
-
- Nov 18, 2021
-
-
Georges Racinet authored
At this point, we are probably making the SSH key and the known hosts content de facto mandatory. It is not clear yet what is the usual GitLab practice.
-
Georges Racinet authored
/usr/local/bin in the Mercurial image instead of /usr/bin in the Gitaly image. (this will be necessary for SSH push tests)
-
Georges Racinet authored
Because everything runs as root in CI, sshd wants to chroot to the `/run/sshd` directory, that must already exist.
-
- Nov 22, 2021
-
-
Georges Racinet authored
We separate the concern of initialization of the remote peer in the new `hgitaly.peer` module. URLs referencing the local file system of the HGitaly server are accepted (for they are very convenient in tests) yet restrained to the relevant storage, thus not adding more rights than the callers already have. We expect the logic to be the same for future subsystems using remote peers. SSH remotes are not implemented yet. The test case for exception raised by `urlparse()` would not pass with Python 3.7 (NKFC normalization exception was introduced in Python 3.8), this was actually the original motivation for dropping Python 3.7 compatibility (see 019dc802a624). Closes #87
-
- Nov 18, 2021
-
-
Georges Racinet authored
This provides facilities to start SSH servers constrained to a single user and use them from `hg` commands, complete with host and user key pairs. `hgitaly.testing.tests.test_sshd` demonstrates a successful push using them, allowing the forthcoming tests for service methods using SSH to focus on their own business.
-
- Nov 22, 2021
-
-
Georges Racinet authored
This is meant to correspond to the patterns used by GitLab for protected branches.
-
- Nov 05, 2021
-
-
Georges Racinet authored
As all changes of protocol, this warrants a bump in minor version. A separate message is introduced to describe the remote peer, so that it can become the standard for future gRPC methods (we'll have at list a `Pull` at some point). Included the implementation and tests boilerplate to make subsequent changesets more to the point.
-
- Nov 18, 2021
-
-
Georges Racinet authored
(including a change that wouldn't work on 3.7) We recently upgraded the CI images to Debian 11 (Python 3.9). Binary packages for Heptapod (Docker images notably) have been shipping Python 3.8 for a very long time, and were upgraded to 3.9 with Heptapod 0.26
-
Georges Racinet authored
These images in the octobus org in Docker Hub predate the usage of registry.heptapod.net.
-
Georges Racinet authored
-
- Nov 15, 2021
-
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
-
Georges Racinet authored
On my laptop, this is enough to make the tests pass. Not to pretend this is satisfactory.
-
- Nov 14, 2021
-
-
Georges Racinet authored
- `FindRefName` has been removed from protocol (probably a good thing as it was a fuzzy heuristic anyway) - `SetFullPath` now returns a proper `NotFound` error if repository does not exist. - `FindRefName` was the only caller of `ensure_gitlab_branches_state_file`, hence we needed a new test to maintain coverage.
-
Georges Racinet authored
-
Georges Racinet authored
The test location was chosen in anticipation of a future move of diff helper classes and functions to the `hgitaly.diff`, module, as suggested in !82 (comment 165083)
-
- Oct 26, 2021
-
-
Sushil Khanchi authored
-
- Oct 17, 2021
-
-
Sushil Khanchi authored
-
- Nov 11, 2021
-
-
Georges Racinet authored
-