我需要检查所有最后一天CVS已提交文件的内容,以便在代码中出现某些表达式,并将其与提交者一起报告。
为了做到这一点,我必须获取文件的内容,但我只能获得具有其他明显属性的已提交文件列表。我用它的命令是
cvs history -a -c -D <today's date> > cvs_history.txt
有没有办法,我可以修改命令,这样我就能得到我需要的东西?或者我是否必须解析历史输出文件并检出所有提到的文件,以便我可以搜索它们?什么是最有效的方法呢?
NB。我正在用Ant脚本编写它(如果这会让事情变得更容易)。
谢谢你, 的Jakub
修改
我需要每天晚上为公司的所有提交(用户列表不断变化)这样做。
在对CVS命令进行一些研究之后,我可能不得不从history
列表中获取rdiff
来获取列表中的每个文件(仅对添加的代码感兴趣)。要致电rdiff
,我必须知道修订版:最后一次修订版来自history
,之前的版本来自rlog
- 这有点困难,因为我还需要考虑修订版本。所有这些都必须使用正则表达式与Perl脚本粘合在一起,最终将它组合到我需要的输出中。
我认为它会这样做,但是大量的提交可能需要很长时间。可能更容易吗?
答案 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)