From 3ad38954f0ab2beeee949318088f0a4cf23d963d Mon Sep 17 00:00:00 2001 From: Rhys Arkins <rhys@arkins.net> Date: Tue, 9 Mar 2021 23:31:41 +0100 Subject: [PATCH] =?UTF-8?q?fix:=20don=E2=80=99t=20push=20empty=20commit=20?= =?UTF-8?q?(#9058)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- lib/util/git/index.spec.ts | 20 +++++++++----------- lib/util/git/index.ts | 9 +++++++++ 2 files changed, 18 insertions(+), 11 deletions(-) diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index 7ed56fcacb..1c449d709b 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -291,21 +291,19 @@ describe('platform/git', () => { files, message: 'Update something', }); - expect(commit).not.toBeNull(); + expect(commit).toBeNull(); }); it('does not push when no diff', async () => { - const branchName = 'renovate/something'; - const local = Git(tmpDir.path); - await local.push('origin', `${defaultBranch}:${branchName}`); - await local.fetch([ - 'origin', - `refs/heads/${branchName}:refs/remotes/origin/${branchName}`, - ]); - const files = []; + const files = [ + { + name: 'future_file', + contents: 'future', + }, + ]; const commit = await git.commitFiles({ - branchName, + branchName: 'renovate/future_branch', files, - message: 'Update something', + message: 'No change update', }); expect(commit).toBeNull(); }); diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index a5bc85338c..dc54430830 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -655,6 +655,15 @@ export async function commitFiles({ const commitRes = await git.commit(message, [], { '--no-verify': null, }); + if ( + commitRes.summary && + commitRes.summary.changes === 0 && + commitRes.summary.insertions === 0 && + commitRes.summary.deletions === 0 + ) { + logger.warn({ commitRes }, 'Detected empty commit - aborting git push'); + return null; + } logger.debug({ result: commitRes }, `git commit`); const commit = commitRes?.commit || 'unknown'; if (!force && !(await hasDiff(`origin/${branchName}`))) { -- GitLab