我想逐行了解,在两次提交之间修改了subversion存储库中源代码的百分比。
例如。说2100版有150,000行代码 - 但修订版2600有165,000行代码,其中原始150,000代码的8,000行经过修改。我会将此报告为142,000 / 165,000 = 86%相同,14%为“新”。我不在乎分离Javadoc,XML,注释或单元测试......只是将它们作为“源”集中在一起。
知道怎么做吗?
答案 0 :(得分:4)
我今天刚刚使用免费的开源工具CLOC做了这个。它允许您以递归方式比较两个目录,因此您需要做的就是检出两个版本并在其上运行程序。
它还提供了不同语言和总数的摘要,例如:
Language files blank comment code
--------------------------------------------------------------------------------
SUM:
same 1556 0 76662 165546
modified 137 0 159 570
added 2 241 257 1250
removed 30 591 906 2271
从那里的'空白'统计数据可以看出,它并不完美,但绝对可以为您提供一个球场。
答案 1 :(得分:3)
您正在寻找的指标(我相信)是code churn。
答案 2 :(得分:2)
我不知道一种简单的方法,但您可以解析源文件生成的差异。通过使用-r
选项进行差异,您可以指定所需的范围,即2100:2600。
使用统一差异,更改(删除或编辑)行的数量可能是diff中以' - '开头的行数。将它们与总线进行比较可以让您接近答案。这当然只是近似值。如果你已经使用了一段时间的补丁,你就会知道简单地重新排序某些行会产生一个差异,显示出比你预期的更多的行变化,所以拿回一些盐的数字。
维基百科有一个short description of the formats。 svn的默认值应该是统一的差异。
答案 3 :(得分:1)
你可以使用diff作为wds说,并做一些bash / awk / sed脚本来获取不同的报告。我不知道一个特定的工具,但编码它将是一个简单而有趣的任务。
答案 4 :(得分:1)
SVN没有内置工具来执行此操作。有一些商业工具,如Fisheye,可以生成各种存储库活动报告,并提供浏览/搜索功能。你可以看看它,看看它是否符合你的需求。
另一种选择是使用“svn log”和“svn diff”,结合一些脚本来告诉你你在寻找什么。