From 6d96d3d220842db91142a8cabcb342f2a0e948d1 Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Mon, 13 Jul 2020 07:31:22 +0200 Subject: [PATCH] refactor: git.setBranch (#6739) --- lib/platform/azure/index.ts | 2 +- lib/platform/bitbucket-server/index.ts | 2 +- lib/platform/bitbucket/index.ts | 2 +- lib/platform/gitea/index.spec.ts | 10 +++--- lib/platform/gitea/index.ts | 2 +- lib/platform/github/index.ts | 2 +- lib/platform/gitlab/index.ts | 2 +- lib/util/git/index.spec.ts | 10 +++--- lib/util/git/index.ts | 47 +++++++++++++------------- 9 files changed, 39 insertions(+), 40 deletions(-) diff --git a/lib/platform/azure/index.ts b/lib/platform/azure/index.ts index 6ab7e0f3a4..6f24dba0b3 100644 --- a/lib/platform/azure/index.ts +++ b/lib/platform/azure/index.ts @@ -189,7 +189,7 @@ export /* istanbul ignore next */ async function setBaseBranch( logger.debug(`Setting baseBranch to ${branchName}`); config.baseBranch = branchName; delete config.baseCommitSHA; - const baseBranchSha = await git.setBaseBranch(branchName); + const baseBranchSha = await git.setBranch(branchName); return baseBranchSha; } diff --git a/lib/platform/bitbucket-server/index.ts b/lib/platform/bitbucket-server/index.ts index 933adbefbd..44cb2afb01 100644 --- a/lib/platform/bitbucket-server/index.ts +++ b/lib/platform/bitbucket-server/index.ts @@ -242,7 +242,7 @@ export async function setBaseBranch( branchName: string = config.defaultBranch ): Promise<string> { config.baseBranch = branchName; - const baseBranchSha = await git.setBaseBranch(branchName); + const baseBranchSha = await git.setBranch(branchName); return baseBranchSha; } diff --git a/lib/platform/bitbucket/index.ts b/lib/platform/bitbucket/index.ts index 0c6a45c9c3..bb16658f8b 100644 --- a/lib/platform/bitbucket/index.ts +++ b/lib/platform/bitbucket/index.ts @@ -182,7 +182,7 @@ export async function setBaseBranch( logger.debug(`Setting baseBranch to ${branchName}`); config.baseBranch = branchName; delete config.baseCommitSHA; - const baseBranchSha = await git.setBaseBranch(branchName); + const baseBranchSha = await git.setBranch(branchName); return baseBranchSha; } diff --git a/lib/platform/gitea/index.spec.ts b/lib/platform/gitea/index.spec.ts index d1810a68c2..ab52ef1aaf 100644 --- a/lib/platform/gitea/index.spec.ts +++ b/lib/platform/gitea/index.spec.ts @@ -390,18 +390,16 @@ describe('platform/gitea', () => { await initFakeRepo(); await gitea.setBaseBranch(); - expect(gitvcs.setBaseBranch).toHaveBeenCalledTimes(1); - expect(gitvcs.setBaseBranch).toHaveBeenCalledWith( - mockRepo.default_branch - ); + expect(gitvcs.setBranch).toHaveBeenCalledTimes(1); + expect(gitvcs.setBranch).toHaveBeenCalledWith(mockRepo.default_branch); }); it('should set custom base branch', async () => { await initFakeRepo(); await gitea.setBaseBranch('devel'); - expect(gitvcs.setBaseBranch).toHaveBeenCalledTimes(1); - expect(gitvcs.setBaseBranch).toHaveBeenCalledWith('devel'); + expect(gitvcs.setBranch).toHaveBeenCalledTimes(1); + expect(gitvcs.setBranch).toHaveBeenCalledWith('devel'); }); }); diff --git a/lib/platform/gitea/index.ts b/lib/platform/gitea/index.ts index 9936f238b9..7cccb5419b 100644 --- a/lib/platform/gitea/index.ts +++ b/lib/platform/gitea/index.ts @@ -449,7 +449,7 @@ const platform: Platform = { baseBranch: string = config.defaultBranch ): Promise<string> { config.baseBranch = baseBranch; - const baseBranchSha = await git.setBaseBranch(baseBranch); + const baseBranchSha = await git.setBranch(baseBranch); return baseBranchSha; }, diff --git a/lib/platform/github/index.ts b/lib/platform/github/index.ts index 652ff6b674..abd2a86dcb 100644 --- a/lib/platform/github/index.ts +++ b/lib/platform/github/index.ts @@ -497,7 +497,7 @@ export async function setBaseBranch( ): Promise<string> { config.baseBranch = branchName; config.baseCommitSHA = null; - const baseBranchSha = await git.setBaseBranch(branchName); + const baseBranchSha = await git.setBranch(branchName); return baseBranchSha; } diff --git a/lib/platform/gitlab/index.ts b/lib/platform/gitlab/index.ts index cffbfa3c3b..98f52c113e 100644 --- a/lib/platform/gitlab/index.ts +++ b/lib/platform/gitlab/index.ts @@ -270,7 +270,7 @@ export async function setBaseBranch( ): Promise<string> { logger.debug(`Setting baseBranch to ${branchName}`); config.baseBranch = branchName; - const baseBranchSha = await git.setBaseBranch(branchName); + const baseBranchSha = await git.setBranch(branchName); return baseBranchSha; } diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index 635fe2d2e9..f7c4e17687 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -69,13 +69,13 @@ describe('platform/git', () => { describe('setBaseBranch(branchName)', () => { it('sets the base branch as master', async () => { - await expect(git.setBaseBranch('master')).resolves.not.toThrow(); + await expect(git.setBranch('master')).resolves.not.toThrow(); }); it('sets non-master base branch', async () => { - await expect(git.setBaseBranch('develop')).resolves.not.toThrow(); + await expect(git.setBranch('develop')).resolves.not.toThrow(); }); it('should throw if branch does not exist', async () => { - await expect(git.setBaseBranch('not_found')).rejects.toMatchSnapshot(); + await expect(git.setBranch('not_found')).rejects.toMatchSnapshot(); }); }); describe('getFileList()', () => { @@ -338,7 +338,7 @@ describe('platform/git', () => { expect(await git.getCommitMessages()).toMatchSnapshot(); - await git.setBaseBranch('develop'); + await git.setBranch('develop'); await git.initRepo({ localDir: tmpDir.path, @@ -347,7 +347,7 @@ describe('platform/git', () => { expect(await git.branchExists('test')).toBeTruthy(); - await git.setBaseBranch('test'); + await git.setBranch('test'); const msg = await git.getCommitMessages(); expect(msg).toMatchSnapshot(); diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 91bc12731d..d80a0b5e4a 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -26,7 +26,7 @@ export type DiffResult = Git.DiffResult; interface StorageConfig { localDir: string; - baseBranch?: string; + currentBranch?: string; url: string; extraCloneOpts?: Git.Options; gitAuthorName?: string; @@ -34,8 +34,8 @@ interface StorageConfig { } interface LocalConfig extends StorageConfig { - baseBranch: string; - baseBranchSha: string; + currentBranch: string; + currentBranchSha: string; branchExists: Record<string, boolean>; branchPrefix: string; } @@ -66,11 +66,11 @@ function localName(branchName: string): string { return branchName.replace(/^origin\//, ''); } -function throwBaseBranchValidationError(branchName: string): never { +function throwBranchValidationError(branchName: string): never { const error = new Error(CONFIG_VALIDATION); - error.validationError = 'baseBranch not found'; + error.validationError = 'branch not found'; error.validationMessage = - 'The following configured baseBranch could not be found: ' + branchName; + 'The following branch could not be found: ' + branchName; throw error; } @@ -159,8 +159,9 @@ export async function syncGit(): Promise<void> { await git.raw(['remote', 'set-url', 'origin', config.url]); const fetchStart = Date.now(); await git.fetch(['--depth=10']); - config.baseBranch = config.baseBranch || (await getDefaultBranch(git)); - await resetToBranch(config.baseBranch); + config.currentBranch = + config.currentBranch || (await getDefaultBranch(git)); + await resetToBranch(config.currentBranch); await cleanLocalBranches(); await git.raw(['remote', 'prune', 'origin']); const durationMs = Math.round(Date.now() - fetchStart); @@ -228,7 +229,7 @@ export async function syncGit(): Promise<void> { throw new Error(REPOSITORY_TEMPORARY_ERROR); } - config.baseBranch = config.baseBranch || (await getDefaultBranch(git)); + config.currentBranch = config.currentBranch || (await getDefaultBranch(git)); } export async function initRepo(args: StorageConfig): Promise<void> { @@ -300,16 +301,16 @@ export async function getCommitMessages(): Promise<string[]> { return res.all.map((commit) => commit.message); } -export async function setBaseBranch(branchName: string): Promise<string> { +export async function setBranch(branchName: string): Promise<string> { if (branchName) { if (!(await branchExists(branchName))) { - throwBaseBranchValidationError(branchName); + throwBranchValidationError(branchName); } - logger.debug(`Setting baseBranch to ${branchName}`); - config.baseBranch = branchName; + logger.debug(`Setting current branch to ${branchName}`); + config.currentBranch = branchName; try { if (branchName !== 'master') { - config.baseBranchSha = ( + config.currentBranchSha = ( await git.raw(['rev-parse', 'origin/' + branchName]) ).trim(); } @@ -325,13 +326,13 @@ export async function setBaseBranch(branchName: string): Promise<string> { ) || err.message.includes('did not match any file(s) known to git') ) { - throwBaseBranchValidationError(branchName); + throwBranchValidationError(branchName); } throw err; } } return ( - config.baseBranchSha || + config.currentBranchSha || (await git.raw(['rev-parse', 'origin/master'])).trim() ); } @@ -353,7 +354,7 @@ export async function setBranchPrefix(branchPrefix: string): Promise<void> { } export async function getFileList(): Promise<string[]> { - const branch = config.baseBranch; + const branch = config.currentBranch; const submodules = await getSubmodules(); const files: string = await git.raw(['ls-tree', '-r', branch]); // istanbul ignore if @@ -389,7 +390,7 @@ export async function isBranchStale(branchName: string): Promise<boolean> { '--remotes', '--verbose', '--contains', - config.baseBranchSha || `origin/${config.baseBranch}`, + config.currentBranchSha || `origin/${config.currentBranch}`, ]); return !branches.all.map(localName).includes(branchName); } @@ -416,9 +417,9 @@ export async function deleteBranch(branchName: string): Promise<void> { export async function mergeBranch(branchName: string): Promise<void> { await git.reset('hard'); await git.checkout(['-B', branchName, 'origin/' + branchName]); - await git.checkout(config.baseBranch); + await git.checkout(config.currentBranch); await git.merge(['--ff-only', branchName]); - await git.push('origin', config.baseBranch); + await git.push('origin', config.currentBranch); limits.incrementLimit('prCommitsPerRunLimit'); } @@ -436,7 +437,7 @@ export async function getBranchLastCommitTime( export async function getBranchFiles(branchName: string): Promise<string[]> { try { - const diff = await git.diffSummary([branchName, config.baseBranch]); + const diff = await git.diffSummary([branchName, config.currentBranch]); return diff.files.map((file) => file.file); } catch (err) /* istanbul ignore next */ { checkForPlatformFailure(err); @@ -457,7 +458,7 @@ export async function getFile( } try { const content = await git.show([ - 'origin/' + (branchName || config.baseBranch) + ':' + filePath, + 'origin/' + (branchName || config.currentBranch) + ':' + filePath, ]); return content; } catch (err) { @@ -510,7 +511,7 @@ export async function commitFiles({ try { await git.reset('hard'); await git.raw(['clean', '-fd']); - await git.checkout(['-B', branchName, 'origin/' + config.baseBranch]); + await git.checkout(['-B', branchName, 'origin/' + config.currentBranch]); const fileNames = []; const deleted = []; for (const file of files) { -- GitLab