Help us understand the problem. What is going on with this article?

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

More than 3 years have passed since last update.

ほとんどの状況で 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 などコミットメッセージが存在する状況で正しく動作しなかったため、正確にコメント文の先頭に追記されるようにスクリプトを修正しました。

superbrothers
Working at Preferred Networks, Inc / CNCF Ambassador / 『Kubernetes実践入門』『 みんなのDocker/Kubernetes』共著 / 『入門Prometheus』監訳 / Kubernetes Meetup Tokyo co-organizer / Cloud Native Deep Dive co-organizer
https://text.superbrothers.dev/
pfn
Make the real world computable / 現実世界を計算可能にする
https://preferred.jp/ja/
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした