Mercurialリポジトリ内の特定の期間に変更されたコード行の数を計算する優れたツールはありますか? statsvn の行に沿った何かが素晴らしいでしょうが、6か月以内に変更されたコード行の数を数えるものなら何でもかまいません(hgログへの引数の巧妙な組み合わせを含む)。ありがとう。
PS:この数を測定する目的については議論しないでください;)
hg churn extension が必要です。
hg activity または hg chart で視覚的な結果を得ることができます。
編集:hg diff
とhg log
はどちらも、これをより適切かつ迅速に実行できる--stat
オプションをサポートしています。
変更された行(必ずしもコード行である必要はありません)をカウントするために、lines
というエイリアスを作成しました。このエイリアスを.hgrcファイルに入れてみてください。
[alias]
lines = !echo `hg log -pr $@ | grep "^+" | wc -l` Additions; echo `hg log -pr $@ | grep "^-" | wc -l` Deletions;
次に、最初にリビジョンを渡し、次にオプションの引数を渡します。
hg lines tip
またはhg lines 123:456 -u brian
空白のみの変更を除いて、変更された行数を知りたい場合があります。これには、diff -w
の代わりにlog -p
を使用する必要があります。これにlinesw
エイリアスを設定しました。
#ignore whitespace
linesw = ![[ $1 =~ : ]] && r=$1 || r="$1~1:$1"; echo `hg diff -wr $r | grep "^+\([^+]\|$\)" | wc -l` Additions; echo `hg diff -wr $r | grep "^-\([^-]\|$\)" | wc -l` Deletions;
hg linesw tip
またはhg lines 123:456
diff
とlog
の動作が異なるため、動作が少し異なることに注意してください。たとえば、log
は--user
パラメータを取りますが、diff
は取りません。 、および範囲を渡すと、log
は範囲で指定された最初のリビジョンでコミットされた変更を表示しますが、diff
は表示しません。
これはbashを使用してのみテストされています。
私はこれを行う必要があり、hgchurn拡張機能と同様のソリューションにかなりの時間を費やしました。
結局、私にとって最も効果的なのはCLOC(Count Lines of Code)であることがわかりました: http://cloc.sourceforge.net/
プロジェクトの2つのバージョンを含む2つのフォルダーを指定すると、同じ、変更、追加、削除されたすべての行がカウントされます。複数の言語を認識し、コード、コメント、空白行を箇条書きにします。
これを使用するには、コードの2つのバージョンをHgから2つの並列フォルダーに取り出し、cloc --diff--ignore-whitespaceを使用しました。