我需要一种简单的方法来使用 cvs 获取文件的修订版本。我可以使用该CVS/Entries
文件获取它。这不安全,我认为必须有另一种方法。cvs log
打印的比我需要的多。如何使用 cvs 命令仅获取某些文件的修订号。
问问题
11333 次
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 回答