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

标签 cvs

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

最佳答案

cvs log -h 仅显示 header 信息。要获取版本,可以很容易地通过 sed、awk 或 Perl 进行过滤。

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

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

# $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 $

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

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

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

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

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

关于CVS命令获取文件的当前修订号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15618098/

相关文章:

svn - Subversion 和 CVS 中添加自动内容的标签是什么?

Eclipse:如何显示在 CVS 中更改此行的用户?

svn - 半可编辑文件(例如配置文件)和版本控制 - 最佳实践?

find - 如何在cvs中查找某人的所有提交(文件注释)

cvs - 如何查看CVS分支点?

java - 如何使用 NetBeans Java CVS 客户端?

windows - Git远程服务器推送失败

version-control - 在 CVS 预提交 Hook 中使用提交消息

cvs - 什么是 CVS "pserver"模式?

git - 从 Git 项目中更新 CVS 模块