LoginSignup
2

More than 5 years have passed since last update.

Git コミットメッセージに Author と Committer を表示する

Last updated at Posted at 2016-12-12

ほとんどの状況で Git Author と Committer はグローバルで設定しておけば足りるのだけれど、特定のリポジトリらでだけそれらを切り替えたくて、でもそれを忘れるのでコミットメッセージに Author と Committer を表示して気づけるようにした。

prepare-commit-msg
#!/usr/bin/env bash

# Prepends author and committer lines to the message
AUTHOR_LINE="$(git var GIT_AUTHOR_IDENT | sed -n 's/^\(.*>\).*$/Author: \1/p')"
COMMITER_LINE="$(git var GIT_COMMITTER_IDENT | sed -n 's/^\(.*>\).*$/Committer: \1/p')"
sed -i "0,/^#/s//# ${AUTHOR_LINE}\n# ${COMMITER_LINE}\n#/" "$1"

gitcommit

これは githooks を使って、prepare-commit-msg のタイミングで Author と Committer をコメント文として先頭に追加している。template 機能を使ってそれぞれのリポジトリの .git/hooks/prepare-commit-msg として上記のスクリプトを置いておけば動作する。template はいくつか設定方法があるので下記ドキュメントの中から都合のよいものを選択すればよい。

また既に存在するリポジトリにはスクリプトを配布しないといけない。$HOME/.git-template を template ディレクトリとしており、ghq を使っているなら以下のように配布すればよい。

$ find "$GHQ_ROOT" -name .git -type d -d 4 | xargs -I {} cp "$HOME/.git-template/hooks/prepare-commit-msg" {}/hooks/

当初は pre-commit のタイミングで GIT_AUTHOR_EMAIL 環境変数を書き換えるようにしようとしたのだけれどうまく機能しなかったので表示して気づけるところに落ち着いた。

追記 Tue Dec 13 11:43:52 JST 2016
git commit --amend などコミットメッセージが存在する状況で正しく動作しなかったため、正確にコメント文の先頭に追記されるようにスクリプトを修正しました。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
2