ハマログ

株式会社イーツー・インフォの社員ブログ

業務小改善 ~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のコミットメッセージ入力画面

以上となります。
簡易的な方法ではありますが、変更内容記載時に内容の振り返りもできるため、意識付けとしては悪くない方法かと考えています。

gitGitリポジトリGit活用術PowerShellWindows開発環境エイリアス設定コミットメッセージコミットログコードレビューコード管理システム開発スクリプトステージングソフトウェア開発ソースコード管理チーム開発バージョン管理プログラミングTips自動化開発フロー開発効率化

  sen   2024年11月29日


関連記事

jQuery セレクターのエスケープ

Javaフレームワークとの兼ね合いで、HTML要素のidを「items[0].c…

第13回Quesに参加してきた

半年に1回あるこのイベントがまたやってきた! QAエンジニアの活性化を目的とした…

GoogleマップのAPIキーが設定されていなかったので設定しました

はじめに いまさらですが、Googleの以下の記事について。 Google Ma…


← 前の投稿

次の投稿 →