7
3

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 3 years have passed since last update.

ギフティAdvent Calendar 2019

Day 2

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

Last updated at Posted at 2019-12-02
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 アプリだと毎回表示されてたりするんでしょうか・・・。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?