GitHub Copilot in VS Code で、作業内容からコミットメッセージを生成可能になりました

2023.12.23

こんにちは、CX 事業本部 Delivery 部の若槻です。

先月の GitHub Copilot in VS Code のアップデートで、コミットメッセージの生成がサポートされました。

Copilot can now generate commit messages based on the pending changes using the new “sparkle” action in the Source Control input box.

試してみる

環境

$ code --version
1.85.1
0ee08df0cf4527e40edc9aa28f4b5bd38bbff2b2
arm64

$ code --list-extensions --show-versions | grep GitHub.copilot@
GitHub.copilot@1.143.0

次のような AWS CDK プロジェクトでの変更で試してみます。

$ git status
On branch main
Your branch is up to date with 'origin/main'.

Changes not staged for commit:
  (use "git add <file>..." to update what will be committed)
  (use "git restore <file>..." to discard changes in working directory)
        modified:   lib/cdk-sample-stack.ts
        modified:   package-lock.json
        modified:   package.json

Untracked files:
  (use "git add <file>..." to include in what will be committed)
        lib/cdk-sample-stack.MyFunction.ts

no changes added to commit (use "git add" and/or "git commit -a")

Git コマンドの場合

次のような依存関係を追加した変更で試してみます。

$ git diff package.json
diff --git a/package.json b/package.json
index eac2d23..fda226d 100644
--- a/package.json
+++ b/package.json
@@ -18,8 +18,10 @@
     "vitest": "0.34.6"
   },
   "dependencies": {
+    "@aws-lambda-powertools/parameters": "1.17.0",
     "@aws-sdk/client-dynamodb": "3.474.0",
     "@aws-sdk/client-s3": "3.474.0",
+    "@aws-sdk/client-ssm": "3.477.0",
     "@aws-sdk/lib-dynamodb": "3.474.0",
     "@aws-sdk/util-dynamodb": "3.474.0",
     "aws-cdk-lib": "2.115.0",

git add コマンドで作業内容をインデックスに追加すると表示される、プロンプト左のキラキラ(Twinkle)アイコンをクリックします。

Quick Fix メニューで[Generate Commit Message]を選択します。

すると、英語でコミットメッセージが生成され、実行可能な git commit コマンドがサジェストされました。

生成されたコミットメッセージは、2 つの依存関係を追加したという、作業内容からして違和感の無いメッセージとなっています。

git commit -m "Add dependencies for AWS Lambda Powertools and AWS SSM client"

また、CDK Stack と Lambda 関数コードという複数のファイルの変更でも、適切なコミットメッセージが生成されました。

$  git add lib/cdk-sample-stack.ts
$  git commit -m "Add SSM Parameters and Lambda Function" # ここではコミットしない
$  git add lib/cdk-sample-stack.MyFunction.ts
$  git commit -m "Add SSM parameter and Lambda function to retrieve parame
ters"

良い感じです。

Source Control の場合

コマンドではなく Source Control の GUI で Git の操作を行う場合でも、コミットメッセージの生成が可能です。

コミットメッセージの入力欄右に、コマンド操作時と同じキラキラ(Twinkle)が表示されます。クリックします。

するとコミットメッセージが生成されました。

Git 操作は GUI 派だという人も助かりますね。

今までは他のコードエディターでも不完全だが対応していた

コミットメッセージの生成は、今までは Visual Studio では対応していました。ただし Visual Studio では GUI による操作時のみのようです。

また Vim でもハック的な方法で生成ができていたようです。

VS Code 以外のエディターをお使いの方は上記も参考にしてみたください。

おわりに

GitHub Copilot in VS Code で、作業内容からコミットメッセージを生成可能になっていたのでご紹介しました。

現状では英語のメッセージしか生成されませんが、作業内容を要約して短い文章に落とし込むという時間を削減できるので、個人的にはかなり重宝しそうです。

以上