Skip to content

Geo: Support HTTP git operations for repos that are not yet replicated

What does this MR do?

This MR allows git clone/pull operations aimed at a Geo secondary to succeed, even if the repository has not been completely replicated. Reasons for why a repository is not completely replicated could be:

  • Selective sync is enabled and the repository in question is not selected for synchronisation
  • The repository is actively being replicated but has not finished

This MR also adds messaging to the end user when their HTTP based push to a Geo secondary has been redirected to the Primary. The messaging is consistent with the existing messaging that appears when performing SSH based pushed to a Geo secondary:

HTTP

remote:
remote: You're pushing to a Geo secondary! We'll help you by redirecting this
remote: request to the primary:
remote:
remote:   https://geo-primary.local/namespace/repo.git
remote:

vs.

SSH

remote:
remote: You're pushing to a Geo secondary! We'll help you by proxying this
remote: request to the primary:
remote:
remote:   ssh://git@geo-primarylocal/namespace/repo.git
remote:

Closes #202035 (closed)

Does this MR meet the acceptance criteria?

Conformity

Availability and Testing

Security

If this MR contains changes to processing or storing of credentials or tokens, authorization and authentication methods and other items described in the security review guidelines:

  • Label as security and @ mention @gitlab-com/gl-security/appsec
  • The MR includes necessary changes to maintain consistency between UI, API, email, or other methods
  • Security reports checked/validated by a reviewer from the AppSec team
Edited by Ash McKenzie

Merge request reports