diff --git a/lib/util/cache/repository/index.ts b/lib/util/cache/repository/index.ts
index 6301ce8927078f760ee80d4269eae3070c29f4b7..81c07da08e1fff60d6120506f8324ef5013b96b4 100644
--- a/lib/util/cache/repository/index.ts
+++ b/lib/util/cache/repository/index.ts
@@ -13,8 +13,8 @@ export interface BaseBranchCache {
 export interface Cache {
   repository?: string;
   init?: {
-    configFile: string;
-    contents: RenovateConfig;
+    configFile?: string;
+    configFileContents?: RenovateConfig;
   };
   scan?: Record<string, BaseBranchCache>;
 }
diff --git a/lib/workers/repository/init/config.ts b/lib/workers/repository/init/config.ts
index fea1aec42db6b517b4584bc9f25a08be26828418..c15916cf44138e972f2a69a8270edef5e8f156a0 100644
--- a/lib/workers/repository/init/config.ts
+++ b/lib/workers/repository/init/config.ts
@@ -126,7 +126,7 @@ export async function mergeRenovateConfig(
   const cache = getCache();
   cache.init = {
     configFile,
-    contents: clone(renovateJson),
+    configFileContents: clone(renovateJson),
   };
   const migratedConfig = await migrateAndValidate(config, renovateJson);
   if (migratedConfig.errors.length) {
diff --git a/lib/workers/repository/init/index.spec.ts b/lib/workers/repository/init/index.spec.ts
index bb3a737e15ac1ef6e535ac6d1689de80eec59daa..54f5ff984e814bd7df2da2f33d6ab29621ae695e 100644
--- a/lib/workers/repository/init/index.spec.ts
+++ b/lib/workers/repository/init/index.spec.ts
@@ -1,23 +1,26 @@
 import { mocked } from '../../../../test/util';
+import * as _onboarding from '../onboarding/branch';
 import * as _apis from './apis';
 import * as _config from './config';
 import { initRepo } from '.';
 
 jest.mock('../../../util/git');
-jest.mock('../../../workers/repository/onboarding/branch');
-jest.mock('../../../workers/repository/configured');
-jest.mock('../../../workers/repository/init/apis');
-jest.mock('../../../workers/repository/init/config');
-jest.mock('../../../workers/repository/init/semantic');
+jest.mock('../onboarding/branch');
+jest.mock('../configured');
+jest.mock('../init/apis');
+jest.mock('../init/config');
+jest.mock('../init/semantic');
 
 const apis = mocked(_apis);
 const config = mocked(_config);
+const onboarding = mocked(_onboarding);
 
 describe('workers/repository/init', () => {
   describe('initRepo', () => {
     it('runs', async () => {
       apis.initApis.mockResolvedValue({} as never);
       config.mergeRenovateConfig.mockResolvedValueOnce({});
+      onboarding.checkOnboardingBranch.mockResolvedValueOnce({});
       const renovateConfig = await initRepo({});
       expect(renovateConfig).toMatchSnapshot();
     });
diff --git a/lib/workers/repository/init/index.ts b/lib/workers/repository/init/index.ts
index 876f4208e3ff38b964d213d4ed8760ec4ca0e96b..3f164db11e0b4fb8fd65c6915b214978cfe6a4ef 100644
--- a/lib/workers/repository/init/index.ts
+++ b/lib/workers/repository/init/index.ts
@@ -11,21 +11,32 @@ import { mergeRenovateConfig } from './config';
 import { detectSemanticCommits } from './semantic';
 import { detectVulnerabilityAlerts } from './vulnerability';
 
-export async function initRepo(input: RenovateConfig): Promise<RenovateConfig> {
+function initializeConfig(config: RenovateConfig): RenovateConfig {
+  return { ...config, errors: [], warnings: [], branchList: [] };
+}
+
+async function initializeCaches(config: RenovateConfig): Promise<void> {
   memCache.init();
-  await repositoryCache.initialize(input);
-  let config: RenovateConfig = {
-    ...input,
-    errors: [],
-    warnings: [],
-    branchList: [],
-  };
-  config = await initApis(config);
+  await repositoryCache.initialize(config);
+}
+
+async function getRepoConfig(config_: RenovateConfig): Promise<RenovateConfig> {
+  let config = { ...config_ };
   config.semanticCommits = await detectSemanticCommits(config);
   config.baseBranch = config.defaultBranch;
   config.baseBranchSha = await platform.setBaseBranch(config.baseBranch);
-  config = await checkOnboardingBranch(config);
   config = await mergeRenovateConfig(config);
+  return config;
+}
+
+export async function initRepo(
+  config_: RenovateConfig
+): Promise<RenovateConfig> {
+  let config: RenovateConfig = initializeConfig(config_);
+  await initializeCaches(config);
+  config = await initApis(config);
+  config = await getRepoConfig(config);
+  config = await checkOnboardingBranch(config);
   checkIfConfigured(config);
   await setBranchPrefix(config.branchPrefix);
   config = await detectVulnerabilityAlerts(config);