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

プルリクがどれくらい巨大になっているか知りながら仕事しよう

image.png

この記事は ギフティ Advent Calendar 2019 - Qiita 2日目の記事です。

背景

つい夢中になって開発していたら、変更箇所が多岐にわたってしまい、レビュワーを面食らわせた・・・こんな経験、誰もが一度はあるのではないでしょうか?プルリクの粒度については色々な意見があるかと思いますが、「巨大すぎるプルリクはレビューの精度を下げるのでよくない」という認識はそれなりに一般的なものだと思います。

とはいえ、「プルリクが大きくなりすぎないように常に 気をつけましょう 」という改善ほど意味のないものはありません。改善は常に具体的なアクションであるべきです。どうすれば同じ失敗を繰り返さずに済むでしょうか?

改善案 : 変更量を継続的に知ろう

先に結論を書くと、ローカルで git commit するたびに、作業ブランチとマージ先ブランチの差分量を表示するようにしてみました。

===================================================================
develop ブランチとの差分 :

 lib/foo/bar.rb    | 15 +++++++++++++++
 lib/foo/baz.rb    | 11 +++++++++++
 lib/foo/corge.rb  | 28 ++++++++++++++++++++++++++++
 lib/foo/foo.rb    |  6 ++++++
 lib/foo/fred.rb   | 11 +++++++++++
 lib/foo/garply.rb |  1 +
 lib/foo/grault.rb |  4 ++++
 lib/foo/plugh.rb  | 10 ++++++++++
 lib/foo/quux.rb   |  2 ++
 lib/foo/qux.rb    |  7 +++++++
 lib/foo/thud.rb   | 11 +++++++++++
 lib/foo/waldo.rb  |  6 ++++++
 lib/foo/xyzzy.rb  |  4 ++++
 13 files changed, 116 insertions(+)

ファイル変更数が 10 を超えました。そろそろプルリク出しませんか?
===================================================================

このアクションを思いついたときに考えていたのは、今の作業ブランチの変更量を知る機会が少なすぎないか?ということです。例えば、今の作業による Files changed の数を、プルリク作成前に見る機会はどれくらいあるでしょうか? CLI だと、コミットしたときに「そのコミット単体の変更量」は表示されますが、「そのブランチ全体の変更量」は表示されません。これがもし git commit のたびに表示されれば、スコープの肥大化にいち早く気づき、キリのいいところで作業を止めて、適切な粒度でプルリクを出せそうです。

実装方法は簡単で、手元のリポジトリの .git/hooks/ 配下に、 post-commit というファイル名で、以下のスクリプトを保存するだけです(手元の Mac で確認しました)。

#!/bin/sh

TARGET="develop"
GITDIFF=`git diff --color --stat-width=800 $TARGET HEAD`
THRESHOLD=10

echo "==================================================================="
echo "$TARGET ブランチとの差分 :"
echo ""
echo "$GITDIFF"
if [ $(echo "$GITDIFF" | grep -v "changed" | wc -l) -gt $THRESHOLD ]; then
    echo ""
    echo "ファイル変更数が ${THRESHOLD} を超えました。そろそろプルリク出しませんか?"
fi
echo "==================================================================="
echo ""

もちろん、ファイル変更数が規模の全てではないとは思いますが、目安としては今のところ十分活用できています。導入も廃止も簡単なので、よければぜひ活用してみてください。

ちなみに

GUI の Git アプリだと毎回表示されてたりするんでしょうか・・・。

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
ユーザーは見つかりませんでした