Gitのコミット数を振り返る - @ledsun blogで、Gitのコミット数をふりかえりました。 今年はコミットの粒度を変えたためコミット数が増えています。 その結果、作業効率は上がったのでしょうか?今度はGitのdiffをふりかえってみます。
日付単位でgit diffのsohrtstatをとります。
3 files changed, 8 insertions(+), 3 deletions(-)
こんなやつです。
require 'date' base_date = Date.new(2019, 5, 22) 0.upto(585) do |i| target_date = base_date + i start_commit = `git rev-list -1 --before="#{target_date} 00:00" current`.chomp end_commit = `git rev-list -1 --before="#{target_date} 23:59" current`.chomp # An expected output string format is like " 3 files changed, 8 insertions(+), 3 deletions(-)". stats = `git diff --shortstat #{start_commit} #{end_commit} ':(exclude)package-lock.json' ':(exclude)*.min.js' ':(exclude)*.css' ':(exclude)dist/*' ':(exclude)dev/vender' ':(exclude)src/lib/modules' ':(exclude)*.md'` parsed_stats = stats.split(",").map { _1.to_i } if parsed_stats.size == 3 puts [target_date].concat(parsed_stats).concat([start_commit, end_commit]).join(" ") else puts [target_date, 0, 0, 0].join(" ") end end
gitのcommitの日付を元にしています。 git rebaseなどで順序が入れ替えていると、本当にその日付にコミットしたとは限りません。 全体的な傾向がわかればいいので、ここでは無視します。
gunplotでグラフ化します。
gnuplot> set xdata time gnuplot> set timefmt "%Y-%m-%d" gnuplot> plot 'daily_git_stast.dat' using 1:3 with steps title 'insertions', '4col.csv' using 1:4 with steps title 'deletions'
4000行を超える変更をした日が二つあります。