2012-06-18 6 views
10

Mercurialには、2,000,000行のコードアプリケーションがあります。明らかに、このリポジトリには貴重な情報がたくさんあります。私の水銀貯蔵庫を「データミング」するためのツールやテクニックはありますか?

その情報の一部を掘り起こすツールやテクニックはありますか?

例えば、プロジェクトの歴史上、どのような5つのファイルが最も大きな変化を見ていますか? 1年前と比べて、5つのファイルが最も異なっていますか?コードの任意の特定の行は、チャーンの多くを見た?

私はそのようなことなどに興味があります。

この種の情報をリポジトリから抽出する方法はありますか?

+2

これは実際には[タグ:データマイニング]ではありません。 StatSVN/StatCVSが他のバージョン管理システム用に提供しているように、簡単で簡単な統計を求めています。さらに、これはプログラミングに関する質問でもありません。 –

+2

さて、十分に公正。だから私はどのように水銀からこれらの些細な統計を得るのですか? –

+0

ニック、あなた自身をロールバックしなくても便利なものは見つかりましたか? – Rory

答えて

10

これを行うために特別に作られたツールはわかりませんが、Mercurialのログテンプレートはシステムからデータを取り出すために非常に強力です。私は過去に、分析のこの種のビットをやった、と私のアプローチは:

  1. 使用hg logをいくつかの便利なフォーマットへのコミットをダンプする(私の場合はXML)を
  2. インポートするスクリプトを書きます

    mystyle.txt::(テンプレート)

    何かの照会可能にXML

ここであなたが軌道に乗るために例hg logコマンドがあります(データベース、またはちょうどそれが大きすぎるではない場合は直接XMLから作業します)

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 
4

内蔵hg churn拡張してみます。 (あなたは、多くの場合、十分なコマンドを使用している見つけた場合にエイリアスを設定したい場合があります)

> 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 ************ 

:私はそれを使用したいことの一つは、例えば、このようなコミットの毎月の棒グラフを確認することです

関連する問題