2011-01-13 10 views
5

問題の統計ジェネレータのウェブサイトは次のとおりです。gitstatsを変更して統計情報に指定したファイル拡張子のみを使用するにはどうすればよいですか?

http://gitstats.sourceforge.net/ 

そのgitリポジトリからクローン化することができます。

./gitstatus --ext=".py" /input/foo /output/bar 

:私は何をしたいことのようなものである

git clone git://repo.or.cz/gitstats.git 

重い変更をせずに上記のオプションを簡単に渡すことができない場合、私はインクルードしたいファイル拡張子をハードコードするだけです。

しかし、私は変更するコードの関連するセクションが不明で、私が知ったとしても、そのような変更をどのように開始するのかは分かりません。だけで面白くない「ファイル」のstatページを、影響下に明らかにしても以前のソリューション:それは残念ながらかなり簡単であるが、したいようにです

答えて

6

今日、同じことを探している間にこの質問が見つかりました。 sinelawの答えを読んだ後、私はコードを調べ、プロジェクトをフォークアップしました。

https://github.com/ShawnMilo/GitStats

私は "exclude_extensions" 設定オプションを追加しました。出力のすべての部分には影響しませんが、そこに到達しています。

git出力でやっていることをすべて理解したら、かなり広範囲に書き直してしまいます。元のプロジェクトは、今日のほぼ4年前に開始されました。標準ライブラリとPython言語の多くのアップデートにより、多くのクリーンアップが可能です。

+0

に変更する必要があるかどうかわかりません。簡単に私自身の解決策を書くことを検討しました。私を緩和してくれてありがとう。 –

+0

これはまだ開発中ですか?それはまさに私が探していたものですが、同じ除外項目の影響を受けるためには、時間の経過とともにコード行が必要です。 – danb

3

EDIT ...そうです。私は何か良いものを見つけようとしています。我々は修正する必要がある行は、この254です:

lines = getpipeoutput(['git rev-list --pretty=format:"%%at %%ai %%aN <%%aE>" %s' % getcommitrange('HEAD'), 'grep -v ^commit']).split('\n') 

前の試みであった:

は残念ながら、簡単にgitのログとgitの中で(コミット中のファイルによってフィルタリングするためのオプションを提供していませんgitのように思えますrevリスト)。このソリューションは、特定のファイルタイプ(タグに関する統計情報など)のすべての統計情報を実際にフィルタリングするわけではありませんが、変更された行数でアクティビティを計算する部分に対してはそうします。

だから私が思い付くことが最高のgitstatsのライン499(メインスクリプト)である:

res = int(getpipeoutput(['git ls-tree -r --name-only "%s"' % rev, 'wc -l']).split('\n')[0]) 

あなたはどちらか、このように、コマンドにはgrepにパイプを追加することによって、それを変更することができます

res = int(getpipeoutput(['git ls-tree -r --name-only "%s"' % rev, 'grep \\.py$', 'wc -l']).split('\n')[0]) 

または、wc -lの部分を分割し、git ls-treeの出力を文字列のリストに入れ、fnmatchモジュールを使用して結果のファイル名をフィルタリングすることができます'wc -l'を使用して各ファイルの行を表示することができます)が、特定の問題が残っていると思われます解決することができます。

まだ問題は解決していません(残りの統計情報はこのフィルタを無視します)が、うまくいけば助かります。

+0

私はこれを調べ始め、私が何を考え出すかを見ていきます。ご協力いただきありがとうございます。 :) –

+0

行を –

関連する問題