鉴于2个文件修订版,我想知道添加/修改/删除了多少行。 我想拥有数千个文件的整个存储库的这些信息。 请指出一个脚本或工具,因为我是一个完整的svn新手
我正在使用Windows
示例输出
文件〜NewRevision〜OldRevision〜增补〜改性〜删除
file1.c中〜#11〜#10〜1〜2〜0
file1.c中〜#2〜#1〜2〜2〜0
答案 0 :(得分:4)
Subversion集成了一个非常好的差异工具。我会使用如下命令:
svn diff -rOldRevision:NewRevision URL
其中URL是存储库的URL(例如,http://www.mycode.org/svn/trunk)。这不会以您要查找的形式格式化diff输出,但会显示每个文件在两个修订号之间的更改方式。
对于格式化,您可以使用grep来计算每个文件中发生的添加和减少的次数。
希望这有帮助!
答案 1 :(得分:2)
SVN(或任何类似工具)不区分已修改的行和已删除并替换为其他内容的行。也就是说,你最好的选择是获得差异(如jordan002所说),然后搜索以+或 - 开头的行。对于每一个 - ,删除了一行,对于每个+,添加了一行(您可以在安装了Unix diff的系统上使用svn diff --diff-cmd diff -x -w -x -u -rOldRev:NewRev
使svn忽略差异上的空白)。然后,您可以比较它们。统一差异将被分为多个(由文件的不同部分更改),以@@开头的行分隔,对于每个块,您可以说删除和添加的行中较少的行是更改的行数,并且对于每个添加的行而不是在大块中移除的行,添加了一行,并且对于每个删除了多于在大块中添加的行,删除了一行。不完美,但对你的评估相对较好。
还有一点需要注意:如果您使用它来评估程序员,请小心。 LOC不是测量相对有效性的好方法。
答案 2 :(得分:1)
我还试图解决任务,例如“在选定的时间段内删除,添加或仅更改了多少行”。所以我编写了简单的shell脚本(仅适用于Linux)。 它收集了一些关于代码修改的sipmle统计信息。 您可以在此处找到更多详细信息和共享脚本:
http://cyber-fall.blogspot.com/2011/10/tools-linux-svn-generate-statistic.html
希望它对你和他人有所帮助!