2008-09-17 18 views
5

我在Windows上(使用WinCVS前端)使用CVS,并且希望在我们的自动构建过程中将最后一次检查的详细信息添加到电子邮件中,无论何时构建失败,以便更容易修复。有谁知道CVS命令行选项来获取上次检查的详细信息?

我需要知道已更改的文件,更改它们的用户和评论。

我一直在努力解决命令行选项,但从来没有得到准确的结果(要么得到太多的结果,而不是从一个签入,或从两个星期前的一些随机签入的细节)

+0

自从我发布这个问题后,我们已经升级到SVN,这使得这个问题变得很小(以及其他许多好处)。我很好地推荐升级! – 2010-10-27 19:44:14

回答

1

哇。

我忘了这件事有多困难。我之前做过的是两个阶段的过程。

首先,运行

cvs history -c -a -D "7 days ago" | 
    gawk '{ print "$1 == \"" $6 "\" && $2 == \"" $8 "/" $7 "\" { print \"" $2 " " $3 " " $6 " " $5 " " $8 "/" $7 "\"; next }" }' > /tmp/$$.awk 

聚集在过去7天的所有签入的信息,并生成将用于创建已发送的电子邮件的一部分脚本。

然后,我在包含破损文件的目录中搜索CVS/Entries文件以获取更多信息。

将两者混合在一起,让我指责罪魁祸首,并发送电子邮件给他们,通知他们他们打破了构建。

对不起,这个答案不像我希望的那么完整。

+1

假设启用了可选的“历史记录”,否则“cvs [server aborted]:此存储库中未启用历史日志记录” – 2010-06-09 15:58:18

1

CVS不提供此功能。但是,您可以通过购买FishEye的许可证或可能使用CVSTrac(注意:我还没有尝试过CVS Trac)来获得它。

或者您可以迁移到SVN,SVN通过原子提交来提供此功能。您可以检入一组文件并将其计为单次提交。在CVS中,无论你做什么,每个文件都是独立的提交。

2

CVS不像其他版本控制系统那样对变更集进行分组;每个文件都有自己的独立版本号和历史记录。这是CVS的缺陷之一,它促使人们转向更新的风险投资。

也就是说,有些方法可以实现您的目标。最简单的可能是添加一个post-commit挂钩来发送电子邮件或登录到一个文件。然后,至少,您可以通过查看电子邮件发送的时间和进行更改的人员将一组提交分组在一起。

0

“cvs history -a -l”会让你关闭吗?显示所有用户上次每个项目的事件...

+0

这是我试过的,但它返回了〜40个结果! – 2008-09-17 19:23:04

1

我们通过perl脚本完成了转储更改日志,并且您可以在第二个链接中获得Windows版perl的免费版本。

Cvs2Cl script

Active Perl

0

CVSNT支持commit IDs,你可以代替日志标签使用,结账或更新命令。提交的每一组文件(提交在CVSNT中都是原子的)都会收到自己的唯一ID。您只需首先通过cvs日志确定上次签入文件的commitid(您可以通过-d“1小时前”或类似方式限制输出),然后查询哪些其他文件具有该ID。

0

Eclipse内置了ChangeSet。您可以通过提交浏览上次更改(至少是传入的更改或更新)。它通过按作者,提交消息和类似时间戳对提交进行分组来完成此操作。

这也适用于“比较/另一个分支或版本”,您可以选择分支,标签和日期。通过“同步视图图标”查看带有“更改集”的弹出式菜单并亲自查看。

编辑:这需要至少作为查看器更改为Eclipse,但取决于您需要比较和分组的频率,可能不会太糟糕。如果你不想使用更多 - 只使用Eclipse的CVS。它应该有可能甚至得到一个像样的大小的图形cvs客户端通过所有的插件rcp,但这肯定是超出范围...

0

这不是一个解决的问题?我认为CI Matrix上的任何支持CVS和电子邮件通知的工具都可以为你做到这一点。

相关问题