From 91dc347c60847213a740ae8f0a26be16f8aaa4bc Mon Sep 17 00:00:00 2001 From: pwwang Date: Fri, 10 Mar 2023 12:05:43 -0700 Subject: [PATCH 1/4] =?UTF-8?q?=E2=9C=A8=20Disable=20generation=20command?= =?UTF-8?q?=20while=20generating=20messages?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 3 ++- src/commands/createCommandGenerateGitCommitMessage.ts | 4 +++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/package.json b/package.json index fe824a1..6cd1edd 100644 --- a/package.json +++ b/package.json @@ -32,7 +32,8 @@ { "command": "gptcommit.generateGitCommitMessage", "title": "GPTCommit: Generate Git Commit Message", - "icon": "$(output)" + "icon": "$(output)", + "enablement": "!gptcommit.generating" }, { "command": "gptcommit.setupOpenAIApiKey", diff --git a/src/commands/createCommandGenerateGitCommitMessage.ts b/src/commands/createCommandGenerateGitCommitMessage.ts index 0299c09..f0309f2 100644 --- a/src/commands/createCommandGenerateGitCommitMessage.ts +++ b/src/commands/createCommandGenerateGitCommitMessage.ts @@ -12,13 +12,15 @@ export default (context: vscode.ExtensionContext, channel: vscode.OutputChannel) } const config = vscode.workspace.getConfiguration('gptcommit'); - + vscode.commands.executeCommand('setContext', 'gptcommit.generating', true); getCommitMessage(config, repo, context, channel).then((message) => { if (repo) { repo.inputBox.value = message; } + vscode.commands.executeCommand('setContext', 'gptcommit.generating', false); }).catch((err) => { vscode.window.showErrorMessage(err); + vscode.commands.executeCommand('setContext', 'gptcommit.generating', false); }); } ); From c1d9f02b2a92bf94cbfb5a928250c3372661e56d Mon Sep 17 00:00:00 2001 From: pwwang Date: Fri, 10 Mar 2023 12:11:38 -0700 Subject: [PATCH 2/4] =?UTF-8?q?=F0=9F=9A=B8=20Don't=20generate=20message?= =?UTF-8?q?=20if=20there=20is=20no=20changes=20(diffs)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/utils.ts | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/src/utils.ts b/src/utils.ts index 085b9aa..eb34dfc 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -40,6 +40,10 @@ export async function getCommitMessage( diff = await repo.diff(false); } } + // if diff is empty, return the promise here + if (!diff) { + return Promise.reject('No changes to commit'); + } writeFileSync(tmpDiffFile, diff); const cmd = `${gptcommit} prepare-commit-msg --commit-msg-file ${tmpMsgFile} --commit-source commit --git-diff-content ${tmpDiffFile}`; channel.appendLine(`COMMAND: ${cmd}`); From 73cdeb83aaba6db0a4eec64ab1ef10d06d3457cf Mon Sep 17 00:00:00 2001 From: pwwang Date: Fri, 10 Mar 2023 12:35:25 -0700 Subject: [PATCH 3/4] =?UTF-8?q?=F0=9F=90=9B=20Add=20debug=20configuration?= =?UTF-8?q?=20to=20show=20verbosal=20information=20in=20output=20channel?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- package.json | 5 +++++ src/utils.ts | 21 +++++++++++++++++++++ 2 files changed, 26 insertions(+) diff --git a/package.json b/package.json index 6cd1edd..ef56816 100644 --- a/package.json +++ b/package.json @@ -65,6 +65,11 @@ "default": "", "description": "Path to gptcommit executable." }, + "gptcommit.debug": { + "type": "boolean", + "default": false, + "description": "If true, debug information will be shown in the output channel." + }, "gptcommit.expressMode": { "type": "boolean", "default": false, diff --git a/src/utils.ts b/src/utils.ts index eb34dfc..bbc75c3 100644 --- a/src/utils.ts +++ b/src/utils.ts @@ -56,10 +56,19 @@ export async function getCommitMessage( try { unlinkSync(tmpDiffFile); } catch (e) {} if (/: not found\s*$/.test(stderr)) { + if (config.debug) { + channel.appendLine('DEBUG: gptcommit not found'); + } reject('gptcommit not found, see https://github.com/zurawiki/gptcommit. If it is not in your PATH, set "gptcommit.gptcommitPath" in your settings to the path to gptcommit'); } else if (/OpenAI API key not found/.test(stderr)) { + if (config.debug) { + channel.appendLine('DEBUG: OpenAI API key not set'); + } reject('OpenAI API key not found, run "gptcommit.setupOpenAIApiKey" command to set it up'); } else if (/is being amended/.test(stdout)) { + if (config.debug) { + channel.appendLine('DEBUG: allow_amend is false'); + } // set allow-amend to true const cmd = `${gptcommit} config set allow_amend true`; channel.appendLine(`COMMAND: ${cmd}`); @@ -71,15 +80,27 @@ export async function getCommitMessage( reject(err); }); } else if (err || stderr) { + if (config.debug) { + channel.appendLine(`DEBUG: gptcommit failed with error: ${err} | ${stderr}`); + } try { unlinkSync(tmpMsgFile); } catch (e) {} reject(err || stderr); } else if (!existsSync(tmpMsgFile)) { + if (config.debug) { + channel.appendLine('DEBUG: gptcommit failed to generate commit message, message file not generated'); + } reject('Failed to generate commit message'); } else if (config.expressMode) { + if (config.debug) { + channel.appendLine('DEBUG: express mode enabled, skipping editor'); + } const msg = readFileSync(tmpMsgFile, 'utf8'); try { unlinkSync(tmpMsgFile); } catch (e) {} resolve(polishMessage(msg, config.expressModeContent)); } else { + if (config.debug) { + channel.appendLine('DEBUG: opening editor'); + } const editor = vscode.window.activeTextEditor; vscode.workspace.openTextDocument(tmpMsgFile).then(async (doc) => { await vscode.window.showTextDocument(doc, { From f5e4a198dae4af249eb89a4e783388078f09cea5 Mon Sep 17 00:00:00 2001 From: pwwang Date: Fri, 10 Mar 2023 12:36:10 -0700 Subject: [PATCH 4/4] =?UTF-8?q?=F0=9F=94=96=200.2.1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- package.json | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 2301b2d..2f66555 100644 --- a/README.md +++ b/README.md @@ -17,7 +17,7 @@ Note: Do NOT install `gptcommit` hook via `gptcommit install` under the root of | ----------------- | --------------- | ----------------- | | < 0.1.0 | 1.75+ | 0.1.16 | | 0.1.x | 1.70+ | 0.1.16 | -| 0.2.0 | 1.70+ | 0.3.0 | +| 0.2.x | 1.70+ | 0.3.0 | ## Commands diff --git a/package.json b/package.json index ef56816..cfc86d3 100644 --- a/package.json +++ b/package.json @@ -2,7 +2,7 @@ "name": "gptcommit", "displayName": "vscode-gptcommit", "description": "Automated git commit messages using GPT models", - "version": "0.2.0", + "version": "0.2.1", "repository": { "url": "https://github.com/pwwang/vscode-gptcommit" },