2

我需要一种简单的方法来使用 cvs 获取文件的修订版本。我可以使用该CVS/Entries文件获取它。这不安全,我认为必须有另一种方法。cvs log打印的比我需要的多。如何使用 cvs 命令仅获取某些文件的修订号。

4

1 回答 1

4

cvs log -h仅显示标题信息。要获得版本,很容易通过 sed、awk 或 Perl 过滤它。

这为您提供了存储库中的版本。如果您想要签出文件的版本,您可以使用ident(RCS 的一部分)——但前提是您在文件中包含了正确的关键字。(这不适用于二进制文件。)

例如,如果您在签入文件之前将以下内容添加到文件中:

# $Id:$
# $Source:$

然后ident foo.txt将打印如下内容:

foo.txt:
     $Id: foo.txt,v 1.3 2011/10/17 22:49:45 kst Exp $
     $Source: /path/to/repo/sandbox/foo.txt,v $

您可以使用许多其他关键字。有关详细信息,请参阅 CVS 手册的关键字替换部分。

这可能会以各种方式出错;例如,如果您在签出文件后对其进行编辑,则扩展关键字不一定反映任何有意义的内容。您可以cvs diff在签出后确定文件是否已被修改。

正如我所提到的,如果您尝试对二进制文件执行此操作,它可能会损坏文件(这就是为什么如果您告诉 CVS 文件是二进制文件,它不会进行关键字替换)。

ident命令是 RCS 的一部分,而不是 CVS,因此如果系统上还没有 RCS,则必须在系统上安装它。(有一个cvs ident命令是有意义的;我不确定为什么它不存在。)

更“现代”的源代码控制系统往往不提供这种功能。

于 2013-03-25T15:26:40.837 回答