いろいろ備忘録日記

主に .NET とか Go とか Flutter とか Python絡みのメモを公開しています。

Goメモ-467 (git log --author="$GIT_USER_NAME" --format="%H %ai" の結果を集計してCUIグラフ表示)(git-calc-worktime)

関連記事

GitHub - devlights/blog-summary: ブログ「いろいろ備忘録日記」のまとめ

概要

以下、自分用のメモです。忘れてしまいそうなので、ついでにここにメモメモ。。。

結構前の記事なんですが、Gigazineさんに以下のポストがあります。

gigazine.net

内容としては、タイトル通りの話になっているものなのですが 記事内で、gitコマンドからユーザのコミット履歴を取得して 各時間帯ごとに集計してグラフ表示するということをやっています。

実際は、Gigazineさんが参照している以下の元記事でやり方とソースが 公開されています。

上の記事で実装されているのはperlスクリプトでした。

んで、面白そうだったのでGoに移植してみました。

github.com

実行すると以下のような感じで出力されます。

$ gcw -user Gitユーザ名 -dir リポジトリのパス(デフォルトはカレントディレクトリ) -tz ローカルタイムゾーン(デフォルトはAsia/Tokyo)
hour          Monday to Friday                      Saturday and Sunday
00     56 ******                              4
01     25 **                                  8
02     17 *                                   9 *
03     11 *                                   7
04      2                                     4
05      0                                     0
06      1                                     0
07      0                                     0
08     31 ***                                 0
09     46 *****                               0
10     80 *********                           0
11    214 ************************            3
12     81 *********                           0
13    170 *******************                 4
14    183 *********************               9 *
15    185 *********************               8
16    210 ************************           11 *
17    215 *************************          22 **
18    115 *************                      19 **
19     58 ******                             24 **
20     46 *****                              13 *
21     19 **                                 15 *
22     17 *                                  18 **
23     36 ****                               24 **

Total:   1818 (90.0%)    202 (10.0%)

元のスクリプトは

   $ git log --author="$GIT_USER_NAME" --format="%H %ai" | perl script.pl

とパイプ経由で入力を受け取り処理するようになっていましたが、Windows環境でも実行しやすいように 処理内で git コマンドも実行するように変更しています。

素晴らしいアイデアを教えてくれた元記事に感謝します。

参考情報

Goのおすすめ書籍


過去の記事については、以下のページからご参照下さい。

サンプルコードは、以下の場所で公開しています。