5

我在 Windows 上使用 CVS(带有 WinCVS 前端),并且希望在构建失败时将上次签入的详细信息添加到来自我们的自动构建过程的电子邮件中,以便更容易修复。

我需要知道已更改的文件、更改它们的用户以及评论。

我一直在尝试制定命令行选项,但似乎从来没有得到准确的结果(要么得到太多的结果,而不是仅仅从一次签入,或者两周前的一些随机签入的详细信息)

4

9 回答 9

2

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

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

于 2008-09-17T19:14:24.903 回答
1

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

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

于 2008-09-17T19:14:11.267 回答
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 文件以获取更多信息。

将两者结合在一起让我能够找到罪魁祸首并向他们发送电子邮件,通知他们他们已经破坏了构建。

抱歉,这个答案并不像我希望的那样完整。

于 2008-09-17T19:19:46.340 回答
1

我们通过一个转储更改日志的 perl 脚本来完成此操作,您可以在第二个链接处获得适用于 Windows 的 perl 的免费版本。

Cvs2Cl 脚本

活动 Perl

于 2008-09-17T19:23:11.933 回答
1

我在 CVSROOT 中使用 loginfo 并将该信息写入文件

http://ximbiot.com/cvs/manual/cvs-1.11.23/cvs_18.html#SEC186

于 2008-10-17T17:12:14.997 回答
0

“cvs history -a -l”会让你接近吗?为所有用户显示每个项目的最后一个事件...

于 2008-09-17T19:17:42.007 回答
0

CVSNT 支持提交 ID,您可以使用它来代替日志、签出或更新命令中的标签。每组提交的文件(提交在 CVSNT 中是原子的)都会收到自己唯一的 ID。您只需首先通过 cvs log 确定最后签入文件的 commitid(您可以通过 -d"1 hour ago" 或类似方法限制输出),然后查询哪些其他文件具有该 ID。

于 2008-11-06T10:03:20.893 回答
0

Eclipse 内置了 ChangeSets。您可以通过提交浏览最后的更改(至少是传入的更改,也就是更新)。它通过按作者、提交消息和类似时间戳对提交进行分组来实现这一点。

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

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

于 2008-11-06T10:42:30.237 回答
0

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

于 2009-03-16T16:12:06.443 回答