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

新人さんにより良いコミットメッセージを書いてもらうための対話式スクリプト

More than 3 years have passed since last update.

作ったもの

コミット時に対話式で質問を表示させるものをつくりました。
↓こんな感じ↓

tty.gif

回答の内容をつなげたものがコミットメッセージになります。

質問リストは別のファイルで自由に設定できるので、
チーム内でコミットメッセージへ書いて欲しい内容をゆるく共有したい場合に。

https://github.com/shimokei53/git_simple_commit_message_editor

How to use

スクリプト本体はこちら

#!/bin/sh

set -e

# core.editorに設定したいもの
# merge,rebaseなどの時に起動する
CORE_EDITOR=vi

# commitじゃなかった場合(mergeとかrebaseとか)の場合はCORE_EDITORに渡す
if [[ ! "$1" = *COMMIT_EDITMSG ]]; then
    $CORE_EDITOR $1
    exit 0
fi

CURRENT_DIR=$(cd $(dirname $0); pwd)
MSGLIST_FILE=$CURRENT_DIR/.gscme_msglist
SAMPLE_MSGLIST_FILE=$CURRENT_DIR/sample_msglist/.gscme_msglist_present_tense_subject

# .gscme_msglistファイルが無い場合は作る
# デフォルトの質問リストをセットする
if [[ ! -r $MSGLIST_FILE ]]; then
    /bin/echo "please edit .gscme_msglist file."
    cat $SAMPLE_MSGLIST_FILE > $MSGLIST_FILE
fi

COMMIT_MSG=""

exec 3< $MSGLIST_FILE
while read line 0<&3
do
    if [[ ${line} == \#* ]]; then
        continue
    fi
    if [[ ${line} ]]; then
        /bin/echo -n "$line > "
        read msg
        COMMIT_MSG="${COMMIT_MSG}${msg}"
    fi
    COMMIT_MSG="${COMMIT_MSG}\n"
done
exec 3<&-

echo $COMMIT_MSG >> $1
exit 0

コピペなりgithubから持ってくるなりして保存して実行権限つけてpath通して、

% chmod +x gscme
% mv gscme /usr/local/bin/gscme

core.editorを置き換えます。(乱暴)

% git config --local core.editor gscme

代わりに、普段使いのエディタをCORE_EDITORの部分にセットしておいてください。

CORE_EDITOR=vi

.gscme_msglistというファイルができるので「コミットするときに書いて欲しいこと」を質問形式で並べると、
そこから1行ずつ表示させる仕掛けになってます。

チーム内で.gscme_msglistだけ共有することで、コミットの際に書いて欲しいことの統一を期待できます。

期待すること

「コミットメッセージに書いて欲しいこと」の共有方法は過去いろんな記事ありますが、
templateなどだと「メッセージの内容」についてまでは言及できなかったり、
またチーム開発の経験がないと「どんなメッセージが有用なのか?」というのがピンと来づらかったりするのかなぁと。

あと「質問に答えづらいコミット」≒ひとつのコミットでいろいろしすぎではないか、と
コミット分割を検討するチェックになるかな、といった副作用も期待してます。

実際には「事前にセットした文章を一行づつ表示させる」「回答をコミットメッセージとして保存する」ことしかしないので、応用効くと思います。たぶん。
なんか面白い使い方見つけたら教えて下さい。

質問の例

変更の概要とか

どのような変更ですか?

外部への影響とか

この変更によって,どんなことが起きますか?

変更された背景とか

なぜその変更が必要でしたか?

「何かstackoverflowに書いてたやつコピペしたら動いたんです」→せめてURL貼っといて、とか

参考URLなど(あれば)

あとは、issue番号とか(これは自動化したほうが楽かも)

issue number?

無駄に増やして嫌がらせとか

本当にコミットして大丈夫? 
本当の本当に?
ちゃんとレビューした?
ではコミットしますか?
本当に?
・・・?
言い残したことはないですか?

あんまり行数増やすとすぐにうざったくなると思うので,3~4行くらいがいいと思います。

追記(4/16)

質問毎に改行を入れるようにしました

また質問ファイルの方に空行を入れると、コミットメッセージの方も空行が入るようにしました。

質問ファイル

(タイトルは現在形で自然に読めるように書く)このコミットは,

この変更によって,どんなことが起きますか?
なぜその変更が必要でしたか?
参考URLなど(あれば)

↓↓↓
コミットメッセージ

改行を追加した

1行目をタイトルのように表示できるようにしました
gitのお作法に従うようにしたかったため
http://qiita.com/smd8122/items/1dd077cb4d7757c5326c#comment-36fa06a283548220015b

これによって、形式が揃うようになりました。

質問ファイルのサンプルフォルダを作って頂きました

https://github.com/shimokei53/git_simple_commit_message_editor/tree/master/sample_msglist

皆さんがどんな質問を書いているのか、共有できればと思います。

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
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