1

我注意到较新版本的 CVS 使用 commitids。

我想这是最近添加的 - 因为“回到过去”并没有这样的事情。

谷歌搜索我发现大多数与 CVSNT 相关的评论 - 但似乎 commitids 也存在于标准开源 CVS 中。

如何利用 commitid 功能(在标准 CVS 中)?

例如:

  • 如何显示提交ID之间的差异?
  • 如何列出与某个 commitid 关联的文件/版本号?
4

1 回答 1

1

除了设置它之外,CVS 本身似乎没有任何东西可以对 commitid 做任何事情。

这是文档所说的(info cvs):

commit,一个唯一的 commitid 被放置在存储库内的 RCS 文件中。一次提交的所有文件都获得相同的 commitid,这是一个仅由十六进制数字组成的字符串(在 GNU CVS 中通常为 16,在 MirBSD 和 MirDebian GNU CVS 中通常为 19)。FSF GNU CVS 1.11、MirOS GNU CVS 1.11 和 OpenBSD OpenCVS 还不支持 commitid。可以使用logandstatus命令检索 commitid;请参阅 *note log:: 和 *note File status::。

其他工具可以解析输出cvs log并确定给定提交的 commitid。特别是,在单个cvs commit命令中提交的更改将具有相同的 commitid。我可以想象这对于将 CVS 存储库转换为其他系统(如 SVN 或 Git)的工具很有用。

但此类工具必须允许由不具备此功能的旧版本 CVS 创建的存储库。例如,我在 CVS 中维护的一个文件有 211 个提交,其中前 186 个没有提交 ID;显然那是我切换到更新版本的 CVS(2007 年末或 2008 年初)的时候。

一起提交的更改也应该共享相同的时间戳,尽管这不太可靠。将时间戳与作者结合起来应该更可靠一些,但仍然不完美。

于 2013-02-14T00:32:03.347 回答