LoginSignup
4
2

More than 3 years have passed since last update.

Git logで出力されたものをGoogle Spreadsheetに持っていってグラフ化

Posted at

やること

Gitのドキュメントを読んでいて、git logは好きなフォーマットで出力できるオプション(--pretty)があったことに気づいたので、それを利用してCSVとして出力してみました。

いったんCSVにしてしまえば、pythonやRなどいろいろな応用が効くと思います。

今回はGoogle Spreadsheetのグラフ機能を使って日ごとのコミット数をグラフにしました。

git log

リポジトリを用意します。

今回はVue.jsのリポジトリを題材として使わせていただきました。

$ git clone https://github.com/vuejs/vue.git

cdコマンドでリポジトリの中に入ります。

$ cd vue

まず見出し行を用意したいと思います。

書式としてはこんな感じです。

$ echo '"見出し1","見出し2"' > "ファイル名.csv"

今回は日付、メッセージ、コミットした人、ハッシュを出力する予定なので、

$ echo '"date","massage","committer","hash"' > "gitlog.csv"

と打ちます。

続いてメインディッシュのgit logです。

以下のような感じに命令します。

$ git log --pretty=format:'"%cd","%s","%cn","%H"' --date=format:'%Y/%m/%d %H:%M:%S' --branches  --remotes >> "gitlog.csv"

--pretty=format:でフォーマットを指定します。

フォーマットについてはGit - コミット履歴の閲覧を参照ください。

--date=format:では日付のフォーマットを指定します。

こちらはなんとなく分かると思います(なげやり)。

--branches--remotesはおまけで、ブランチに関わらず、リモートリポジトリを含めて出力するようになっているはずです。

それらを>> "gitlog.csv"の部分でさきほどの見出しだけのファイルに追記しています。

出力されたものが以下。

gitlog_screen.png

それらしく出ていると思います。

ちなみに5882行ありました(2019/10/30現在)。すごい…!

Spreadsheetにインポート

sheet.newにアクセスして新しいスプレッドシートを作ります。

ファイル -> インポートからgitlog.csvをアップロードできます。

オプションとかは初期設定でいいはずです。

するとこんな感じになります。

gitlog_spread.png

これをグラフにしたいのですが、その際にDateにTimeが含まれているので(Datetimeやないかい)、

Timeまで見ると細かすぎるので、

そこをなんとかしようと思います。

言い訳するとログ自体はできる限り細かく取って、あとでデータを加工したほうがいいと思ったのですよ。

で、1Eのところにdatetextという見出しを入力します。

次に、2Eのところに

=text(A2,"YYYY-mm-dd")

こんな感じの式を入れます。

そしてエイヤッとダブルクリックすると…

gitlog_spread_text.png

こんな感じでうまいこと年月日部分を取り出せました。

そしてE列を選択し、挿入 -> グラフを命令すると、

gitlog_graph.png

グラフができました! Dateの進む方向が右へ行くにつれて昔になっています。

まず行1を固定(表示 -> 固定から)したあと、データ -> 列Eを基準にA-Zでシートを並べ替えをしてみます。

gitlog_graph_az.png

うまく取れてない行(たぶんカンマとかが入っちゃったのかと)があったので削除しちゃいます。

ちなみに先頭だけではなく、中間のほうにも2件ありました。

そして一日だけ妙にコミット数の多い日があったので、グラフの設定のほうから50でリミットをかけます。

gitlog_graph_minmax.png

これにて完成!

gitlog_graph_final.png

こうしてみると突出していた2015年の9月に加え、16,17,18年にも1回ずつぐらいピークの日があったようです。

しかし10コミットに達する日が割とあるのは尊敬します。

まとめ

git logのフォーマット機能を使ってCSVを出力してみました。

うまくすればCircleCIなどで自動化もできそうな感じがしないでもないですね。

じき試したい…。

4
2
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
4
2