如何在CVS中获取最后一天提交文件的内容?

时间:2013-04-17 08:55:51

标签: cvs cvsnt

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

为了做到这一点,我必须获取文件的内容,但我只能获得具有其他明显属性的已提交文件列表。我用它的命令是

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

有没有办法,我可以修改命令,这样我就能得到我需要的东西?或者我是否必须解析历史输出文件并检出所有提到的文件,以便我可以搜索它们?什么是最有效的方法呢?

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

谢谢你, 的Jakub

修改

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

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

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

2 个答案:

答案 0 :(得分:1)

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

cvs history -u username ....

答案 1 :(得分: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'ouptut,并提取与提交的修订号相关的分支名称。

感谢您的兴趣和建议; o)