Provide empty All-Projects and All-Users repositories for slave

For the Gerrit slave to start, when using the gerrit-slave chart, the
All-Users.git and All-Project.git repositories were expected to exist.
The init cointainer would only proceed, if this was the case. Since it
is not necessary that these repositories already contain data for the
slave to start up, it would be easier to just create them before
starting the slave, if they do not already exist.

This change removes the parts of the init container entrypoint script
that wait for the repositories to appear and creates bare All-Projects
and All-Users repositories on startup, if they do not exit yet.

Change-Id: I1bd489d587ae530f9b8283bde6c49ccfe7f5337c
diff --git a/container-images/gerrit-slave-init/tools/start b/container-images/gerrit-slave-init/tools/start
index 7c21851..48f733d 100755
--- a/container-images/gerrit-slave-init/tools/start
+++ b/container-images/gerrit-slave-init/tools/start
@@ -40,13 +40,6 @@
   return 0
 }
 
-test_repositories(){
-  local EXIT_CODE=0
-  test -d "/var/gerrit/git/All-Projects.git" || EXIT_CODE=1
-  test -d "/var/gerrit/git/All-Users.git" || EXIT_CODE=1
-  return ${EXIT_CODE}
-}
-
 test_mysql_db(){
   local EXIT_CODE=0
   mysql -h ${DB_HOST} -P${DB_PORT} -u ${DB_USER} -p${DB_PASSWORD} ${DB_NAME} >/dev/null 2>&1 </dev/null || EXIT_CODE=1
@@ -64,15 +57,6 @@
   return ${EXIT_CODE}
 }
 
-wait_for_repositories(){
-  echo "Waiting for replicated repositories."
-  while [ true ]; do
-    test_repositories && break
-    sleep 10
-  done
-  echo "The All-Projects.git and All-Users.git repository was found."
-}
-
 wait_for_db_schema(){
   echo "Waiting for database to be ready."
 
@@ -126,9 +110,6 @@
     -d /var/gerrit
 fi
 
-# wait for All-Projects to arrive via replication from master
-wait_for_repositories
-
 # wait for db schema to arrive via replication from master
 wait_for_db_schema
 
diff --git a/container-images/gerrit-slave/tools/start b/container-images/gerrit-slave/tools/start
index 926ee0f..974e2ca 100755
--- a/container-images/gerrit-slave/tools/start
+++ b/container-images/gerrit-slave/tools/start
@@ -1,5 +1,9 @@
 #!/bin/bash
 
+create_missing_repository(){
+  test -d $1 || git init --bare $1
+}
+
 gerrit_uid=$(id -u)
 gerrit_gid=$(cut -d: -f3 < <(getent group users))
 
@@ -10,6 +14,9 @@
 JAVA_OPTIONS=$(git config --file /var/gerrit/etc/gerrit.config --get-all container.javaOptions)
 git config -f /var/gerrit/etc/gerrit.config container.slave true
 
+create_missing_repository /var/gerrit/git/All-Projects.git
+create_missing_repository /var/gerrit/git/All-Users.git
+
 # workaround gerrit.sh does not start httpd
 java ${JAVA_OPTIONS} -jar /var/gerrit/bin/gerrit.war daemon \
     -d /var/gerrit \
diff --git a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
index d7857ee..145996a 100644
--- a/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
+++ b/helm-charts/gerrit-slave/templates/gerrit-slave.deployment.yaml
@@ -61,6 +61,25 @@
           mountPath: "/var/keystore"
           subPath: keystore
         {{- end }}
+      - name: create-repositories
+        image: bitnami/git
+        securityContext:
+          runAsUser: 1000
+          runAsGroup: 100
+        command:
+        - /bin/bash
+        - -c
+        args:
+        - |
+          create_missing_repository(){
+            test -d $1 || git init --bare $1
+          }
+
+          create_missing_repository /var/gerrit/git/All-Projects.git
+          create_missing_repository /var/gerrit/git/All-Users.git
+        volumeMounts:
+        - name: git-filesystem
+          mountPath: "/var/gerrit/git"
       containers:
       - name: gerrit-slave
         image: {{ template "registry" . }}{{ .Values.gerritSlave.images.gerritSlave }}:{{ .Values.images.version }}