A Gerrit replica has been deployed.
=================================

The Apache-Git-HTTP-Backend is now ready to receive replication requests from the
primary Gerrit. Please configure the replication plugin of the primary Gerrit to
push the repositories to:

{{ if .Values.istio.enabled -}}
  http {{- if .Values.istio.tls.enabled -}} s {{- end -}} :// {{- .Values.istio.host -}} /git/${name}.git
{{ else if .Values.ingress.enabled -}}
  http {{- if .Values.ingress.tls.enabled -}} s {{- end -}} :// {{- .Values.ingress.host -}} /git/${name}.git
{{- else }}
  http://<EXTERNAL-IP>: {{- .Values.gitBackend.service.http.port -}} /git/${name}.git
  The external IP of the service can be found by running:
  kubectl get svc git-backend-service
{{- end }}

Requests to create new repositories have to be directed to the route /new/${name}.git
over HTTP(S). A detailed guide of how to configure Gerrit's replication plugin
can be found here:

https://gerrit.googlesource.com/plugins/replication/+doc/master/src/main/resources/Documentation/config.md

The Gerrit replica is starting up.

The initialization process may take some time. Afterwards the git repositories
will be available under:

{{ if .Values.istio.enabled -}}
  http {{- if .Values.istio.tls.enabled -}} s {{- end -}} :// {{- .Values.istio.host -}} /<repository-name>.git
{{- else }}
  http {{- if .Values.ingress.tls.enabled -}} s {{- end -}} :// {{- .Values.ingress.host -}} /<repository-name>.git
{{- end }}
