如何获取和使用CVSNT提交ID?

时间:2010-06-09 14:54:56

标签: cvs cvsnt

我在another question上看到了一个由CVSNT自动生成的唯一提交ID的引用,它标记了每次提交。我想我所在部门的大多数人都在使用CVSNT或前端。

我找到了the CVSNT manual中描述的提交标识符,但没有解释如何确定CVSNT提交标识符对于文件的特定修订版本是什么。有没有办法做到这一点?我想知道为其他人的签名生成了什么提交标识符,以便我可以将提交中涉及的文件组合在一起。

1 个答案:

答案 0 :(得分:3)

CVS命令日志和rlog都显示文件各个修订的提交标识符。我不知道使用此标识符获取检索信息的CVS命令,但我可以确认单个提交中的所有文件共享相同的标识符。

我有自己的日志文件解析器,它使用commit-id将受单个提交影响的文件组合在一起(例如,更改历史记录按日期排序,并将文件分组为单个提交)。

读完链接后,您可以指定类似“log -r @ commit-id”的内容,以获取共享提交标识符的受影响文件列表。可能会对命令行进行更多调整,但以下内容会有所成功(稍微有些噪音):

c:\> cvs -q log -N "-r @fd049d34574117b"

=============================================================================

RCS file: /folder/file.xml,v
Working file: folder/file.xml
head: 1.3
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 4;     selected revisions: 1
description:
=============================================================================

RCS file: /folder/file2.xml,v
Working file: /folder/file2.xml
head: 1.2
branch:
locks: strict
access list:
keyword substitution: kv
total revisions: 2;     selected revisions: 0
description:
=============================================================================

请注意,第一个文件包含“selected revisions:1”,表示commit对应于文件的版本。

  1. 您可以使用正则表达式来过滤掉“所选修订版本:0”条目(多行注册由一系列“==============”分隔)
  2. 然后仅提取结果的“工作文件”条目以提供文件列表。
  3. 如果您不想使用自己的工具,请尝试查找“cvs changeset”: