Github: https://github.com/erikbern/git-of-theseus
Git reposを分析するスクリプト このようなクールなグラフを作成します( git自体で実行します)。
インストール
pip install git-of-theseus
実行pip install git-of-theseus
ランニング
まず、 git-of-theseus-analyze <path to repo>
を実行する必要があります(複数のconfigについてはgit-of-theseus-analyze --help
を参照してください)。 これはリポジトリを分析し、かなり時間がかかることがあります。
その後、プロットを生成することができます。 あなたがそれを行うにはいくつかの方法があります:
-
git-of-theseus-stack-plot cohorts.json
を実行して、stack_plot.png
書き込みstack_plot.png
-
git-of-theseus-survival-plot survival.json
を実行して、survival_plot.png
書き込みます(いくつかのオプションで--help
を付けて実行してください)
複数のリポジトリをプロットする場合は、プロジェクトごとに個別にgit-of-theseus-analyze
を実行し、– --outdir
フラグを使用して別々のディレクトリにデータを格納する必要があります。 次に、 git-of-theseus-survival-plot <foo/survival.json> <bar/survival.json>
を実行することができます(指数関数的減衰に合うように--exp-fit
フラグを指定します)
助けて
AttributeError: Unknown property labels
– これを見ているなら、upgrade matplotlib。 pip install matplotlib --upgrade
いくつかの写真
興味深いレポのセットでのコード行の生存:
この曲線はgit-of-theseus-survival-plot
スクリプトによって生成され、 x年後にまだ存在するコミットの行の割合を示します。 どの時点で作成されたかにかかわらず、すべてのコミットでそれを集約します。 したがって、 x = 0の場合はすべてのコミットが含まれますが、 x> 0の場合はすべてのコミットがカウントされません(いくつかの未来を調べなければならないため)。 生存曲線はKaplan-Meierを用いて推定される。
指数関数近似を追加することもできます:
Linux – スタックプロット:
この曲線はgit-of-theseus-stack-plot
スクリプトによって生成され、コードが追加された年までにコホートに分解されたレポの行の総数を示します。
ノードスタックプロット:
Rails – スタックプロット:
他のものをプロットする
git-of-theseus-analyze
は、 exts.json
、 cohorts.json
、およびauthors.json
ます。 git-of-theseus-stack-plot authors.json
を実行すると、著者統計をプロットすることも、 git-of-theseus-stack-plot exts.json
を使用してファイル拡張統計をプロットすることもできます。 著者の統計情報の場合、作成者を重複排除するための.mailmapファイルを作成することができます。 たとえば、 Kubernetesの著者統計は次のとおりです 。
それを100%に正規化することもできます。 Gitの作者統計は次のとおりです。
他のもの
Markovtsev Vadimは、TheseusのGitよりも20〜6倍速いと主張する非常に似た分析を実装しました。 これはHerculesという名前で、Gitの歴史を分析するための複雑なすべてのブログ記事があります。