作ったもの
コミット時に対話式で質問を表示させるものをつくりました。
↓こんな感じ↓
回答の内容をつなげたものがコミットメッセージになります。
質問リストは別のファイルで自由に設定できるので、
チーム内でコミットメッセージへ書いて欲しい内容をゆるく共有したい場合に。
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
これによって、形式が揃うようになりました。
質問ファイルのサンプルフォルダを作って頂きました
皆さんがどんな質問を書いているのか、共有できればと思います。