CVS命令获取当前修订版本的文件

时间:2013-03-25 15:00:00

标签: cvs

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

1 个答案:

答案 0 :(得分:3)

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手册的Keyword substitution部分。

这可能以各种方式出错;例如,如果您在签出后编辑文件,扩展的关键字不一定会反映任何有意义的内容。您可以使用cvs diff来确定结帐后是否修改了文件。

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

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

更多“现代”的源控制系统往往不提供这种设施。