获取最后一条CVS提交的消息或差异

时间:2009-10-07 11:20:24

标签: cvs version-control

我想知道如何轻松地在CVS模块中获得最后的更改。

3 个答案:

答案 0 :(得分:11)

我想也许你可以使用history命令。尝试类似:

cvs history -c -D 2012-04-01 -a

上面的例子显示了自指定日期以来的所有提交(指定所以列表的长度有限......)。

-c表示提交,  -a表示所有用户。

使用相同的时间戳提交,然后用户显然来自同一个提交。然后,您可以使用

继续阅读该提交的日志消息
cvs log -r <version> <file>

只需从特定提交中选择一个文件即可。您也可以在历史记录输出中找到该文件的版本。最后,要看到差异,我会使用

cvs diff -D "<date 1>" -D "<date 2>"

此处,“日期1”和“日期2”应该是提交之前和之后的时间戳。请注意(据我所知),如果您正在处理分支(??),这似乎不起作用。那将是我想的另一个问题的主题。

答案 1 :(得分:0)

cvs log将返回所有这些内容。既然你不能说“最后N个修订版”(这里,我甚至不能说cvs log HEAD),有两种选择:

  1. 使用head -N获取N个最顶行(仅限Unix或Cygwin)

  2. 使用日期和cvs log -d DATE

答案 2 :(得分:0)

由于CVS实现单独对每个文件进行版本化,因此我认为您必须通过每个文件并比较提交时间戳以确定哪个是最新的。将此与CVS不支持提交集的概念这一事实相结合,因此您可以获得具有相同提交时间戳的一堆文件。哪一个是最新的?或者也许您可以创建一个写入日志文件的提交钩子,并使用它来确定最新的提交。

正如您可能已经想到的那样,这些都不是特别有选择的途径。我强烈建议您在模块级别始终与标签进行比较。建立一个软件过程,包括在进行足够重要的改进时标记模块(例如,每日构建,部署到测试环境等),然后使用创建的标记作为比较基线。

您可以使用

完成对标记的最新更改
    没有工作副本的
  • cvs rdiff命令,或
  • cvs diff命令位于工作副本的顶层

有关完整参考,请参阅CVS文档。