どんな記事か?
その日に、どのくらいコミットして、変更を加えたのかを知りたくなったので、slackに流すようにしてみました。
どうやったか?
色んなところで使えるように、incoming webhookにリクエストするシェルスクリプトをつくって、それをcronで実行する形をとりました。
daily-git-report.sh
#!/bin/sh
HOOK_URL=""
slack_channel=""
REPO=""
AUTHOR=""
cd ${REPO}
COMMIT_LOG=$(git shortlog --all --no-merges --author="${AUTHOR}" --since="midnight")
LINES=$(git log --all --numstat --pretty="%H" --author="${AUTHOR}" --since="midnight" | awk 'NF==3 {plus+=$1; minus+=$2} END {printf("+%d, -%d\n", plus, minus)}')
MESSAGE="${COMMIT_LOG} \\r\\n [insertions, deletions]: \\r\\n ${LINES}"
PAYLOAD="payload={\"channel\":\"${slack_channel}\" , \"text\":\"${MESSAGE}\"}"
curl -X POST --data-urlencode "${PAYLOAD}" ${HOOK_URL}
これで、次のようなのが、slackに投稿されます。git shortlog
でコミット数とコミットメッセージの1行目を、こちらの記事をもとに、追加・削除した行数を算出したのを出しています。
author(10)
commit message 1
commit message 2
...
commit message 10
[insertions, deletions]
+XXX -YYY
あとはcronで、
30 17 * * 1-5 /path/to/daily-git-report.sh > /dev/null
などと、平日の定時のタイミングで実行させれば完了です。
コミットメッセージの書式は最低限のルールは守らないと、綺麗に表示されないので気をつけましょう。こちらやGitのコミットメッセージの書き方 を参考にしました。
何が期待できるか
開発チームのチャンネルに投稿することで、
- 自分の進捗や作業内容を報告
- 人目にさらすことで、コミットメッセージをわかりやすくしようとする
- コミット粒度にも意識するようになる
と、なるのではないかと。とりあえず、自分だけでまずやってみます。
参考サイト