diff --git a/extensions/git/src/git.ts b/extensions/git/src/git.ts index 4c712ed4e06..0ad6ae25db7 100644 --- a/extensions/git/src/git.ts +++ b/extensions/git/src/git.ts @@ -1939,6 +1939,17 @@ export class Repository { return message.replace(/^\s*#.*$\n?/gm, '').trim(); } + async getSquashMessage(): Promise { + const squashMsgPath = path.join(this.repositoryRoot, '.git', 'SQUASH_MSG'); + + try { + const raw = await fs.readFile(squashMsgPath, 'utf8'); + return this.stripCommitMessageComments(raw); + } catch { + return undefined; + } + } + async getMergeMessage(): Promise { const mergeMsgPath = path.join(this.repositoryRoot, '.git', 'MERGE_MSG'); diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index d38cc1a56a1..4774fb0cddd 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -865,10 +865,10 @@ export class Repository implements Disposable { } async getInputTemplate(): Promise { - const mergeMessage = await this.repository.getMergeMessage(); + const commitMessage = (await Promise.all([this.repository.getMergeMessage(), this.repository.getSquashMessage()])).find(msg => msg !== undefined); - if (mergeMessage) { - return mergeMessage; + if (commitMessage) { + return commitMessage; } return await this.repository.getCommitTemplate();