From 3f90d90ab2394c25e7e7584a885f8f5a4e4eb5d4 Mon Sep 17 00:00:00 2001 From: Daniel Davis Date: Fri, 26 Jun 2020 12:35:32 +0100 Subject: [PATCH 1/5] Adding .git/SQUASH_MSG detection to commit message autofill --- extensions/git/src/git.ts | 11 +++++++++++ extensions/git/src/repository.ts | 3 +++ 2 files changed, 14 insertions(+) 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 72afa29eeea..7d6b77432e3 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -866,9 +866,12 @@ export class Repository implements Disposable { async getInputTemplate(): Promise { const mergeMessage = await this.repository.getMergeMessage(); + const squashMessage = await this.repository.getSquashMessage(); if (mergeMessage) { return mergeMessage; + } else if (squashMessage) { + return squashMessage; } return await this.repository.getCommitTemplate(); From 05e719bede1dc28fa4cb57029f5732b90ff27e1d Mon Sep 17 00:00:00 2001 From: Daniel Davis Date: Fri, 26 Jun 2020 13:26:40 +0100 Subject: [PATCH 2/5] Changing auto-fill commit message to check for getMergeMessage OR getSquashMessage --- extensions/git/src/repository.ts | 9 +++------ 1 file changed, 3 insertions(+), 6 deletions(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index 7d6b77432e3..fbc0619ddeb 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -865,13 +865,10 @@ export class Repository implements Disposable { } async getInputTemplate(): Promise { - const mergeMessage = await this.repository.getMergeMessage(); - const squashMessage = await this.repository.getSquashMessage(); + const commitMessage = await this.repository.getMergeMessage() || await this.repository.getSquashMessage(); - if (mergeMessage) { - return mergeMessage; - } else if (squashMessage) { - return squashMessage; + if (commitMessage) { + return commitMessage; } return await this.repository.getCommitTemplate(); From 7bb8f9103e49b04081ff21fd33f1bbfb52bd6076 Mon Sep 17 00:00:00 2001 From: Daniel Davis Date: Fri, 26 Jun 2020 14:03:43 +0100 Subject: [PATCH 3/5] Changing commit message to use Promise.race instead of bad comparison --- extensions/git/src/repository.ts | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index fbc0619ddeb..b735943235d 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -865,8 +865,7 @@ export class Repository implements Disposable { } async getInputTemplate(): Promise { - const commitMessage = await this.repository.getMergeMessage() || await this.repository.getSquashMessage(); - + const commitMessage = await Promise.race([this.repository.getMergeMessage(), this.repository.getSquashMessage()]); if (commitMessage) { return commitMessage; } From b3c2e36cd477791b03c1e5a2233233cec1ab8d1f Mon Sep 17 00:00:00 2001 From: Daniel Davis Date: Fri, 26 Jun 2020 16:55:25 +0100 Subject: [PATCH 4/5] Changing commit message auto-fill to use the first non-undefined message --- extensions/git/src/repository.ts | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index b735943235d..c773ea132d5 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -864,8 +864,9 @@ export class Repository implements Disposable { return toGitUri(uri, '', { replaceFileExtension: true }); } - async getInputTemplate(): Promise { - const commitMessage = await Promise.race([this.repository.getMergeMessage(), this.repository.getSquashMessage()]); + async getInputTemplate(): Promise { + const commitMessage = (await Promise.all([this.repository.getMergeMessage(), this.repository.getSquashMessage()])).find(msg => msg !== undefined); + if (commitMessage) { return commitMessage; } From df1575d52959cbcd1f956fa0f03f0cc96bba1277 Mon Sep 17 00:00:00 2001 From: Daniel Davis Date: Fri, 26 Jun 2020 16:57:57 +0100 Subject: [PATCH 5/5] Changing return type back --- extensions/git/src/repository.ts | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/extensions/git/src/repository.ts b/extensions/git/src/repository.ts index c773ea132d5..0676d9024c8 100644 --- a/extensions/git/src/repository.ts +++ b/extensions/git/src/repository.ts @@ -864,7 +864,7 @@ export class Repository implements Disposable { return toGitUri(uri, '', { replaceFileExtension: true }); } - async getInputTemplate(): Promise { + async getInputTemplate(): Promise { const commitMessage = (await Promise.all([this.repository.getMergeMessage(), this.repository.getSquashMessage()])).find(msg => msg !== undefined); if (commitMessage) {