2013-04-17 28 views
3

我需要的是检查所有最后一天CVS提交的文件中发生的代码中的某些表达式的内容,并向其提交者报告。如何获取CVS中最后一天提交的文件的内容?

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

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

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

注意:我正在用Ant脚本编写它(如果这将使事情变得更容易)。

谢谢 的Jakub

编辑:

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

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

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

+0

你可以使用post-commit钩子来搜索相关的表达式吗? –

+0

这听起来不错...但首先,我只需要从客户端电脑上做,因为公司不会很高兴看到我玩遥控回购。但是,如果报告会提供良好的结果,我将不得不使用挂钩来防止提交不需要的代码... – Kuba

回答

1

因此,要回答我的问题,当我需要的仅仅是最后一天提交的内容,我确实创造了一个Perl脚本,调用

cvs history -a -c -D $today

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

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

其中$ prevRev只是lastDigit($修订版) - 1.这只是让我一个diff的内容,所以我把它添加到报告并处理它,因为我需要再(搜索为不需要的表达式...)。

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

此外,就感兴趣的问题而言,我们希望在报告中看到分支的名称而不是修订版本号。因此,我按照上面类似的方式使用'rlog'ouptut并提取与提交的修订版号相关的分支名称。

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

1

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

cvs history -u username .... 
+0

谢谢。问题是,'history'命令只会给我提交的文件列表(包括用户和修订版本),而不是他们的内容。或者可以以某种方式? – Kuba

+0

不,我认为它不能这样做,sory – Gerard

+0

没关系。我已经整理出来了。感谢您的建议:) – Kuba

相关问题