Gitのdiffを振り返る - @ledsun blog でGitの記録から、約2年間の毎日のファイルの変更行数を見ました。 1日に4000行の人力では不可能に思える変更が見つかりました。 今度は巨大な変更を含むコミットを探してみましょう。
require 'date' EXCLUDE = "':(exclude)package-lock.json' ':(exclude)*.min.js' ':(exclude)*.css' ':(exclude)dist/*' ':(exclude)dev/vender' ':(exclude)src/lib/modules' ':(exclude)*.md'" start_date = Date.parse $*.shift end_date = Date.parse $*.shift limit = $*.shift.to_i git_rev_list_command = "git rev-list --after='#{start_date} 00:00' --before='#{end_date} 23:59' current" p git_rev_list_command revs = `#{git_rev_list_command}`.split("\n") revs.reverse.each do |revision| result_of_git_show = `git show --shortstat --oneline #{revision} #{EXCLUDE}` short_stat = result_of_git_show.split("\n")[1] next unless short_stat insertions, deletions = short_stat.split(",")[1..].map { _1.to_i} next unless insertions next unless deletions if insertions > limit || deletions > limit system "git show #{revision} --format=format:'%H%n%ai%n%s' --shortstat #{EXCLUDE}" puts "\n" end end
実行してみると、次の結果が得られました。 1000行以上の変更をしているコミットを探しました。
~ ruby gitdiffindate.rb 2019/05/22 2020/12/31 1000 "git rev-list --after='2019-05-22 00:00' --before='2020-12-31 23:59' current" 663c84dbf80a105b22078418f87c2474ac9487a5 2019-07-24 14:58:23 +0900 code-style: Introduce the Prettier code formatter 330 files changed, 3990 insertions(+), 1883 deletions(-) 5c3f2c2122f676df8f91a03df5ef12830082cb93 2019-07-24 15:01:49 +0900 code-style: Ban one-var 56 files changed, 1077 insertions(+), 1086 deletions(-) cf2acd9f917e2652048df97050c0e885aaec0731 2019-11-12 11:18:55 +0900 refactor: Format annotation files 10 files changed, 2543 insertions(+), 2158 deletions(-) d5c2b8881c9edbececee8b7753a8f04b2dd3f5cd 2019-11-19 15:35:29 +0900 refactor: Format less files 6 files changed, 1181 insertions(+), 968 deletions(-) 5bb834fca322388da6b3ca94db99e4910f6f774a 2019-11-07 20:28:24 +0900 feature: Show attribute tabs in the Pallet 25 files changed, 1180 insertions(+), 69 deletions(-)
発見したコミットログを見ると、ほとんどがツールを使ったフォーマット変更でした。
feature: Show attribute tabs in the Palletは、機能追加です。 機能追加とはいえ、1コミットで1000行入れるのは、我ながらよくなかったと反省です。
この5つのコミットが2019-07-29
と2019-12-02
に集計された結果、1日4000行オーバーになっていました。
つまりノイズです。これらの異常値を除いてグラフを作り直してみます。
今度は2000行近い変更が異常値に思えてきました。