我花了一天的大部分时间来完成对我们某个项目的代码库的基本管理更改(用log4j替换所有System.out.println()调用)。

我很好奇我用这组更改更新了多少行代码。

无论如何使用cvs diff或其他命令来准确计算已更改的行数?

我试过

cvs diff -b -B -R

获取工作目录中的所有更改(以及递归子目录),但是对于每个更改的文件,它还会打印出文件/版本信息,这使得计算输出行无用。

有什么想法吗?

有帮助吗?

解决方案

从diff输出中过滤掉额外的行,然后计算行数。

例如,grep只有以<!> lt;开头的行;或<!> gt;

cvs diff -b -B -R | egrep '^<|>' | wc -l

其他提示

diffstat 实用程序是一个很好的工具,可以从cvs,svn的输出中获取一些简单的指标或其他差异。

您可以简单地将cvs diff的输出传输到diffstat。

如何确认您已使用以下内容更改了所有实例:

find . | egrep -v -e '(CVS|<other patterns you don't want>)' | \
    xargs egrep -e 'System\.out\.println[(][)]' | wc -l

应该给你零。

然后用'log4j'替换第二个egrep中的正则表达式应该让wc -l返回你改变的行数。

HTH。

欢呼声,

罗布

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top