19
21

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

slackに当日の自分の作業分のgit logを流す

Posted at

どんな記事か?

その日に、どのくらいコミットして、変更を加えたのかを知りたくなったので、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のコミットメッセージの書き方 を参考にしました。

何が期待できるか

開発チームのチャンネルに投稿することで、

  • 自分の進捗や作業内容を報告
  • 人目にさらすことで、コミットメッセージをわかりやすくしようとする
  • コミット粒度にも意識するようになる

と、なるのではないかと。とりあえず、自分だけでまずやってみます。

参考サイト

19
21
0

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?