業務小改善 ~PowerShellでコミットログの雛形を作成~
コミットログが粗い問題
私はGitのコミットログが粗く、レビュー時に作業内容が分かりにくい問題があったため、ひな形を作りつつセルフチェックを意識付けする方法を考えました。結果、ローカルリポジトリでステージングしたファイルに対して、PowerShellでひな形を作成し、チェックしながら書いていく方法を取ることにしました。
具体的な方法
※Windowsローカル環境を想定します。
下記のようなスクリプトをBOMつきでローカルに置き、呼び出しやすいようにエイリアスを設定する(例:GetGitInfo)
# コンソールの出力エンコーディングをUTF-8に設定 [Console]::OutputEncoding = [System.Text.Encoding]::UTF8 # 現在のディレクトリがGitリポジトリかどうかを確認 $isGitRepo = git rev-parse --is-inside-work-tree 2>$null if ($isGitRepo -ne "true") { Write-Host "エラー:このディレクトリはGitリポジトリではありません。" exit 1 } # 現在のブランチ名を取得 $branchName = git rev-parse --abbrev-ref HEAD if (-not $branchName) { Write-Host "エラー:ブランチが見つかりません。" exit 1 } # ブランチ名が "feature/" で始まる場合、プレフィックスを除外 if ($branchName -like "feature/*") { $displayBranchName = $branchName -replace "^feature/", "" } else { $displayBranchName = $branchName } # ステージングされているファイルを取得し、新規ファイルと更新ファイルを分ける $stagedFiles = git diff --cached --name-status if (-not $stagedFiles) { Write-Host "エラー:ステージングされているファイルがありません。" exit 1 } # 出力結果を保存する変数を初期化 $output = "▼課題名:$displayBranchName`n" # ステージングされているファイルごとにフォーマット文を出力 foreach ($line in $stagedFiles) { # ファイル情報をタブで分割(新規・更新の区別を取得) $parts = $line -split "`t" $status = $parts[0] $fileName = $parts[1] # 更新ファイル一覧を作成 switch ($status) { "A" { $fileLabel = "新規ファイル" $changeContent = "作成内容:" } "M" { $fileLabel = "更新ファイル" $changeContent = "変更内容:" } "D" { $fileLabel = "削除" $changeContent = "削除理由:" } default { $fileLabel = "変更" $changeContent = "変更内容:" } } # 出力を変数に追加 $output += "・$fileLabel:$fileName`n" $output += "⇒$changeContent`n" $output += "`n" } # クリップボードに出力内容を保存 $output | Set-Clipboard # 結果を表示し、クリップボードに保存したことを通知 Write-Host $output Write-Host "①不要な修正がないか確認" Write-Host "②インデントや体裁に問題がないかも確認" Write-Host "③変更内容が複数ある場合は、改行⇒で区切って記載!" Write-Host "以上のことに気を付けてください!" Write-Host "クリップボードに保存しました!"
※エイリアスの設定方法は下記を参照
https://qiita.com/bonny_d/items/a2f3a3ac59304609e42a
実行結果は以下のようになります。
PS C:\path\to\repo> GetGitInfo ▼課題名:ブログ用の更新 ・新規ファイル:new_faile.txt ⇒作成内容: ・更新ファイル:test.txt ⇒変更内容: ①不要な修正がないか確認 ②インデントや体裁に問題がないかも確認 ③変更内容が複数ある場合は、改行⇒で区切って記載! 以上のことに気を付けてください! クリップボードに保存しました!
クリップボードに保存されたひな形を基に、コミットメッセージを作成します。
※画像はSourcetreeのコミットメッセージ入力画面
以上となります。
簡易的な方法ではありますが、変更内容記載時に内容の振り返りもできるため、意識付けとしては悪くない方法かと考えています。