共同開発などでブランチ名をコミットメッセージに入れたい場合があったのでGitHookを使って自動的に入力されるようにしました。
※今回は、ブランチ名に共通した文字列が含むことを前提としています。
GitHookとは?
- Gitで、特定のアクション(git branchなど)が実行されたときに、スクリプトを実行する機能です。
やり方
肝心のスクリプトを実行するファイル群は、 .git/hooks
ディレクトリにあります。
1 | cd [gitディレクトリ]/.git/hooks |
今回はコミットメッセージを編集することが目的なので、hooks
ディレクトリにあるcommit-msg.sample
を編集します。
まず、ファイル名を編集します。
1 | mv commit-msg.sample commit-msg |
編集後、
1 | vi commit-msg |
でファイル閲覧モードに切り替えてください。
編集モードに変更したら、
1 | if git branch | grep '*' | grep 'xxx'; |
を挿入しEscキーをクリック後、:wq
で保存してください。
保存後、ブランチ名がxxx_test
のようなもので検証してみましょう。
ブランチ名がxxx_hoge
のとき、【hoge】テスト
といったコミットメッセージを自動的に作成することができます。
解説
commit-msg
ファイルに挿入した一行目のif条件の1つ目git branch
で、該当プロジェクトでローカルで作成したブランチの一覧を取得しています。
2つ目grep '*'
で現在のブランチを取得。
3つ目grep 'xxx'
で現在のブランチの名前にxxx
が含まれているかチェックしています。
チェックを通過すると、最初のthen以下が読み込まれます。
NAME
変数に該当ブランチの必要な箇所の格納をしています。
git branch | grep '*'
で同様に現在のブランチを取得し、二回のsed
(PHPでいうstr_replace
)で必要な、共通箇所以外の部分を抜き出しています。