37

是否有任何好的工具可以计算在某个时间段内更改的代码行数在 mercurial 存储库中?类似于 statsvn的东西会很棒,但是任何计算 6 个月内更改的代码行数的东西都可以(包括对 hg log 参数的巧妙组合)。谢谢。

PS:请不要讨论测量这个数字的目的;)

4

3 回答 3

27

hg churn 扩展是您想要的。

您可以使用hg activityhg chart获得视觉结果。

于 2010-06-16T21:16:51.420 回答
17

编辑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 -wbelow 而不是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 进行了测试。

于 2012-04-20T19:25:19.367 回答
11

我需要这样做,并且花了很多时间处理 hg churn 扩展和类似的解决方案。

最后,我发现最适合我的是 CLOC(Count Lines of Code):http ://cloc.sourceforge.net/

您可以给它两个文件夹,其中包含一个项目的两个版本,它会计算所有相同、修改、添加、删除的行。它可以识别多种语言并逐条列出代码、注释和空行。

为了使用它,我将我的代码的两个版本从 Hg 提取到两个并行文件夹中,然后使用 cloc --diff --ignore-whitespace

于 2011-05-11T19:16:05.920 回答