diff --git a/lib/platform/git/storage.js b/lib/platform/git/storage.js index 12558edd89f64065bc850b3cf6d352a0783d8fec..8d485666a462ad9d776eb4f44b07270beb7fe6ff 100644 --- a/lib/platform/git/storage.js +++ b/lib/platform/git/storage.js @@ -139,10 +139,16 @@ class Storage { return res.all.map(commit => commit.message); } - function setBaseBranch(branchName) { + async function setBaseBranch(branchName) { if (branchName) { logger.debug(`Setting baseBranch to ${branchName}`); config.baseBranch = branchName; + if (branchName !== 'master') { + config.baseBranchSha = (await git.raw([ + 'rev-parse', + 'origin/' + branchName, + ])).trim(); + } } } @@ -186,7 +192,7 @@ class Storage { '--remotes', '--verbose', '--contains', - config.baseBranch, + config.baseBranchSha || config.baseBranch, ]); return !branches.all.map(localName).includes(branchName); } diff --git a/lib/workers/repository/process/index.js b/lib/workers/repository/process/index.js index f4eddec6fb34585bb1f4704e35c12ab54a46c02a..30554b7142f9e38320c96c76a6c19876472e632e 100644 --- a/lib/workers/repository/process/index.js +++ b/lib/workers/repository/process/index.js @@ -38,7 +38,7 @@ async function processRepo(config) { baseBranchConfig.branchPrefix += `${baseBranch}-`; baseBranchConfig.hasBaseBranches = true; } - platform.setBaseBranch(baseBranch); + await platform.setBaseBranch(baseBranch); const baseBranchRes = await extractAndUpdate(baseBranchConfig); ({ res } = baseBranchRes); branches = branches.concat(baseBranchRes.branches); diff --git a/test/platform/git/storage.spec.js b/test/platform/git/storage.spec.js index f4e56d9fd0dda593547cad87a230bff1a374b6d7..ed7e13f192d8b238497ac46066fb481560bf73af 100644 --- a/test/platform/git/storage.spec.js +++ b/test/platform/git/storage.spec.js @@ -20,6 +20,7 @@ describe('platform/git/storage', () => { await repo.commit('past message'); await repo.checkoutBranch('renovate/past_branch', 'master'); + await repo.checkoutBranch('develop', 'master'); await repo.checkout('master'); await fs.writeFile(base.path + '/master_file', 'master'); @@ -66,8 +67,11 @@ describe('platform/git/storage', () => { }); describe('setBaseBranch(branchName)', () => { - it('sets the base branch', async () => { - await git.setBaseBranch('some-branch'); + it('sets the base branch as master', async () => { + await git.setBaseBranch('master'); + }); + it('sets non-master base branch', async () => { + await git.setBaseBranch('develop'); }); }); describe('getFileList()', () => {