diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index 7ed56fcacb170d639a95792a16848901b1225bfe..1c449d709bcbf9e8ff8640752e2e2de0be919238 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 a5bc85338c7ae42e4e5a86c8b696bd433e069816..dc5443083039556bd5e2bf19e2bde0e49ca3bfd2 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}`))) {