From 9bdd8b53c3511c3461b6d81e87ce4f1498932ed1 Mon Sep 17 00:00:00 2001
From: Rhys Arkins <rhys@arkins.net>
Date: Sun, 5 Jul 2020 08:25:21 +0200
Subject: [PATCH] refactor(git): separate init from sync

---
 lib/util/git/index.ts | 16 ++++++++++++----
 1 file changed, 12 insertions(+), 4 deletions(-)

diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts
index cf3c6906ba..9e93484f07 100644
--- a/lib/util/git/index.ts
+++ b/lib/util/git/index.ts
@@ -39,6 +39,7 @@ interface LocalConfig extends StorageConfig {
   baseBranchSha: string;
   branchExists: Record<string, boolean>;
   branchPrefix: string;
+  syncCompleted: boolean;
 }
 
 // istanbul ignore next
@@ -146,10 +147,11 @@ export async function getSubmodules(): Promise<string[]> {
     .filter((_e: string, i: number) => i % 2);
 }
 
-export async function initRepo(args: StorageConfig): Promise<void> {
-  config = { ...args } as any;
-
-  config.branchExists = {};
+export async function syncGit(): Promise<void> {
+  if (config.syncCompleted) {
+    return;
+  }
+  config.syncCompleted = true;
   logger.debug('Initializing git repository into ' + config.localDir);
   const gitHead = join(config.localDir, '.git/HEAD');
   let clone = true;
@@ -232,6 +234,12 @@ export async function initRepo(args: StorageConfig): Promise<void> {
   config.baseBranch = config.baseBranch || (await getDefaultBranch(git));
 }
 
+export async function initRepo(args: StorageConfig): Promise<void> {
+  config = { ...args } as any;
+  config.branchExists = {};
+  await syncGit();
+}
+
 // istanbul ignore next
 export async function getRepoStatus(): Promise<StatusResult> {
   return git.status();
-- 
GitLab