Mercurialには2,000,000行のコードアプリケーションがあります。明らかに、このリポジトリ内には多くの貴重な情報があります。
その情報の一部を掘り下げるためのツールやテクニックはありますか?
たとえば、プロジェクトの歴史の中で、最も変化が見られた5つのファイルはどれですか。1年前と最も異なる5つのファイルはどれですか?多くのチャーンが見られる特定のコード行はありますか?
そういうことに興味があります。
この種の情報をリポジトリから抽出する方法はありますか?
Mercurialには2,000,000行のコードアプリケーションがあります。明らかに、このリポジトリ内には多くの貴重な情報があります。
その情報の一部を掘り下げるためのツールやテクニックはありますか?
たとえば、プロジェクトの歴史の中で、最も変化が見られた5つのファイルはどれですか。1年前と最も異なる5つのファイルはどれですか?多くのチャーンが見られる特定のコード行はありますか?
そういうことに興味があります。
この種の情報をリポジトリから抽出する方法はありますか?
これを行うために特別に作成されたツールはわかりませんが、Mercurialのログテンプレートはシステムからデータを取得するのに非常に強力です。私は過去にこの種の分析を少し行ったことがあり、私のアプローチは次のとおりでした。
hg log
コミットをいくつかの便利な形式(私の場合はxml)にダンプするために使用しますhg log
これがあなたを動かすためのコマンドの例です:
mystyle.txt :(テンプレート)
changeset = '<changeset>\n<user>{author|user}</user>\n<date>{date|rfc3339date|escape}</date>\n<files>\n{file_mods}{file_adds}{file_dels}</files>\n<rev>{node}</rev>\n<desc>{desc|strip|escape}</desc>\n<branch>{branches}</branch><diffstat>{diffstat}</diffstat></changeset>\n\n'
file_mod = '<file action="modified">{file_mod|escape}</file>\n'
file_add = '<file action="added">{file_add|escape}</file>\n'
file_del = '<file action="deleted">{file_del|escape}</file>\n'
テンプレートと日付範囲を使用した呼び出しの例:
hg --repository /path/to/repo log -d "2012-01-01 to 2012-06-01" --no-merges --style mystyle.txt
組み込みのhgchurn拡張機能を試してください。たとえば、私がこれを使用するのが好きなことの1つは、次のようなコミットの月次棒グラフを表示することです。
> hg churn -csf '%Y-%m'
2014-02 65 *************************************
2014-03 22 *************
2014-04 52 ******************************
2014-05 67 ***************************************
2014-06 31 ******************
2014-07 29 *****************
2014-08 29 *****************
2014-09 61 ***********************************
2014-10 36 *********************
2014-11 23 *************
2014-12 32 ******************
2015-01 60 ***********************************
2015-02 20 ************
(コマンドを頻繁に使用していることがわかった場合は、エイリアスを設定することをお勧めします)