我需要的是检查所有最后一天CVS提交文件的内容,检查代码中是否出现某些表达式,并将其报告给提交者。
为了做到这一点,我必须获得文件的内容,但我只能获得具有其他明显属性的提交文件列表。我使用的命令是
cvs history -a -c -D <today's date> > cvs_history.txt
有没有办法,我可以修改命令,这样我就可以得到我需要的?还是必须解析历史输出文件并签出所提到的所有文件,以便进行搜索?最有效的方法是什么?
NB。我是用Ant脚本写的(如果这会让事情变得更容易的话)。
谢谢你,Jakub
编辑:我需要每天晚上对公司的所有提交(不断变化的用户列表)都这样做。
在对CVS命令进行了一些研究之后,我可能不得不使用history
列表,并从列表中获取每个文件的rdiff
(只对添加的代码感兴趣)。要调用rdiff
,我必须知道修订:最后一个修订来自history
,它之前来自rlog
-这有点困难,因为我还需要考虑分支修订。所有这些都必须与使用正则表达式的Perl脚本粘合在一起,并最终将其组合成我需要的输出。
我认为这样可以,但是对于大量的提交来说可能会花费很长时间。还能更简单吗?
如果用户数量有限,则可以对每个用户运行history命令并组合输出。
cvs history -u username ....
所以,为了回答我的问题,当我只需要提交最后一天的内容时,我确实创建了一个Perl脚本来调用
cvs history -a -c -D $today
并将输出保存到commit-log.txt文件中(可能不需要,但我只是为了节省内存而这样做)。然后,我只处理commit-log.txt文件,并只从我的域中选择文件。在这些我叫
cvs rdiff -r $prevRev -r $revision -u $repoName/$file
,其中$prevRev只是lastDigit($revision) - 1。这只是给我一个不同的内容,所以我将它附加到报告并根据需要处理它(搜索不需要的表达式…)。
如果我想要文件的全部内容,我只需要在上面的命令中使用第一个$ firstvision(可能是1.1或1.0)而不是$prevRev。
同样,出于兴趣,我们希望在报告中看到分支的名称而不是修订编号。因此,我以类似于上面的方式使用'rlog'输出,并提取与提交的修订号相关的分支名称。
谢谢大家的兴趣和建议;0)