3

我需要的是检查所有最后一天 CVS 提交文件的内容是否在代码中出现某些表达式,并将其报告给它的提交者。

为此,我必须获取文件的内容,但我只能获取具有其他明显属性的已提交文件的列表。我用的命令是

cvs history -a -c -D <today's date> > cvs_history.txt

有什么办法,我可以修改命令,所以我可以得到我需要的东西?还是我必须解析历史输出文件并签出所有提到的文件,以便我可以搜索它们?什么是最有效的方法?

注意。我正在用 Ant 脚本编写它(如果这会让事情变得更容易的话)。

谢谢你,雅库布

编辑:

我需要每天晚上为公司的所有提交(用户列表不断变化)做这件事。

在对 CVS 命令进行了一些研究之后,我可能不得不获取history列表并rdiff从列表中获取每个文件(只对添加的代码感兴趣)。并且要调用rdiff,我必须知道修订:最后一个修订来自history,它是以前的来自rlog- 这有点困难,因为我还需要考虑分支修订。所有这些都必须使用正则表达式与 Perl 脚本粘合在一起,最终将其组合到我需要的输出中。

我认为这样做可以,但是大量提交可能需要很长时间。会不会更容易?

4

2 回答 2

1

如果您有一组有限的用户,您可以为每个用户运行历史命令并组合输出。

cvs history -u username ....
于 2013-04-20T09:24:51.307 回答
1

所以,为了回答我的问题,当我唯一需要的是最后一天提交的内容时,我确实创建了一个 Perl 脚本来调用

cvs history -a -c -D $today

并将输出保存到 commit-log.txt 文件中(可能不需要,但我这样做只是为了节省内存)。然后我只处理 commit-log.txt 文件并从我的域中只选择 efiles。在这些我打电话

cvs rdiff -r $prevRev -r $revision -u $repoName/$file

其中 $prevRev 只是 lastDigit($revision) - 1。这只是给我一个差异内容,所以我将它附加到报告中并根据需要进行处理(搜索不需要的表达式......)。

如果我想要文件的全部内容,我会在上面的命令中使用第一个 $firstRevision(可能是 1.1 或 1.0)而不是 $prevRev。

此外,出于兴趣,我们希望在报告中看到分支的名称而不是修订号。因此,我以与上述类似的方式使用“rlog”输出,并提取与提交的修订号相关的分支名称。

感谢大家的兴趣和建议;o)

于 2013-04-24T16:45:38.877 回答