【问题标题】:CVS command to get the current revision number of fileCVS 命令获取文件的当前修订号
【发布时间】:2013-03-25 15:00:00
【问题描述】:

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

【问题讨论】:

    标签: cvs


    【解决方案1】:

    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,则必须在系统上安装它。 (有一个cvs ident 命令会很有意义;我不确定为什么它不存在。)

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

    【讨论】:

    • 是的,我需要签出文件的版本。你能举例说明如何使用ident
    • 现代版本控制系统不提供此功能,因为普遍认为在源代码中冗余存储版本信息是一个坏主意。
    • @AdriaanKoster:但它实际上可能是一个有用的功能(我当然发现了)。
    • 加油!抓住机会加入 21 世纪!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-13
    • 1970-01-01
    • 1970-01-01
    • 2012-12-05
    • 2017-09-09
    • 2012-05-24
    相关资源
    最近更新 更多