書籍「Engineers in VOYAGE ― 事業をエンジニアリングする技術者たち」のレガシーシステムの話題のなかで、git-of-theseus が紹介されており、面白そうだったので使ってみたメモです。
git-of-theseusとは
Gitのリポジトリを分析してくれるスクリプト(Python)で、下図のようにリポジトリ全体のコードを、追加された年ごとに分けてグラフとして出力してくれたりします。(※画像はリポジトリより引用)(他にも、コミットのAuthorの割合やファイルの拡張子の割合をグラフに含めたりできるようです。)
使ってみる
インストールは
pip install git-of-theseus
でOKです。(そもそも pip
が入ってなかったので easy_install pip
しました。)
インストールが完了すれば、あとは分析したいリポジトリに移動して
$ git-of-theseus-analyze ./
を実行します。
リポジトリのコミット数などによっては分析にだいぶ時間がかかる場合もありますが、完了すると authors.json
cohorts.json
exts.json
survival.json
というJSONファイルが生成されます。
あとは、生成されたJSONに対して
$ git-of-theseus-stack-plot cohorts.json
といった形で実行すると、グラフの画像ファイル( stack_plot.png
)が生成される流れになっています。
使ってみた
実際に2年物の某リポジトリに対してgit-of-theseusを使ってみました。
このリポジトリでは、2020年の6月頃にリファクタリングを行ったのですが、それの結果がグラフとして現れており(2020-06の付近で減りが多め)、それが視覚的にわかるのが面白いなと思いました。
その他にも、「初期の頃にガッと実装したなぁ」「2019年6月にガッと増えてるけど、あの機能追加したんだなぁ」など、思い出に浸れるのも良いポイントでした。
終わりに
git-of-theseusの簡単な説明と使ってみた雑な感想を記載しました。
コードの移り変わりを可視化することで、視覚的にリポジトリの状態を把握できるので、振り返りに便利だなと感じました。