diff --git a/lib/util/git/index.spec.ts b/lib/util/git/index.spec.ts index 0fecc03503aa6784ad5de04e547bd873ed5efc0d..8302f6af1b66f093941333286b5e84876ccdeb63 100644 --- a/lib/util/git/index.spec.ts +++ b/lib/util/git/index.spec.ts @@ -376,6 +376,28 @@ describe('util/git/index', () => { }); expect(commit).not.toBeNull(); }); + it('uses right commit SHA', async () => { + const files: FileChange[] = [ + { + type: 'addition', + path: 'some-existing-file', + contents: 'updated content', + }, + { + type: 'addition', + path: 'some-other-existing-file', + contents: 'other updated content', + }, + ]; + const commitConfig = { + branchName: 'renovate/something', + files, + message: 'Update something', + }; + const commitSha = await git.commitFiles(commitConfig); + const remoteSha = await git.fetchCommit(commitConfig); + expect(commitSha).toEqual(remoteSha); + }); it('updates git submodules', async () => { const files: FileChange[] = [ { diff --git a/lib/util/git/index.ts b/lib/util/git/index.ts index 58983ac67e1f14b0c6ed049e6683fdfb592504ae..58ee277cca68105529cf757da23218eaa515d65b 100644 --- a/lib/util/git/index.ts +++ b/lib/util/git/index.ts @@ -906,7 +906,6 @@ export async function prepareCommit({ { deletedFiles, ignoredFiles, result: commitRes }, `git commit` ); - const commitSha = commitRes?.commit || 'unknown'; if (!force && !(await hasDiff(`origin/${branchName}`))) { logger.debug( { branchName, deletedFiles, addedModifiedFiles, ignoredFiles }, @@ -915,6 +914,7 @@ export async function prepareCommit({ return null; } + const commitSha = (await git.revparse([branchName])).trim(); const result: CommitResult = { parentCommitSha, commitSha, @@ -980,13 +980,17 @@ export async function fetchCommit({ } export async function commitFiles( - config: CommitFilesConfig + commitConfig: CommitFilesConfig ): Promise<CommitSha | null> { - const commitResult = await prepareCommit(config); + const commitResult = await prepareCommit(commitConfig); if (commitResult) { - const pushResult = await pushCommit(config); + const pushResult = await pushCommit(commitConfig); if (pushResult) { - return fetchCommit(config); + const { branchName } = commitConfig; + const { commitSha } = commitResult; + config.branchCommits[branchName] = commitSha; + config.branchIsModified[branchName] = false; + return commitSha; } } return null;