我注意到较新版本的 CVS 使用 commitids。
我想这是最近添加的 - 因为“回到过去”并没有这样的事情。
谷歌搜索我发现大多数与 CVSNT 相关的评论 - 但似乎 commitids 也存在于标准开源 CVS 中。
如何利用 commitid 功能(在标准 CVS 中)?
例如:
- 如何显示提交ID之间的差异?
- 如何列出与某个 commitid 关联的文件/版本号?
我注意到较新版本的 CVS 使用 commitids。
我想这是最近添加的 - 因为“回到过去”并没有这样的事情。
谷歌搜索我发现大多数与 CVSNT 相关的评论 - 但似乎 commitids 也存在于标准开源 CVS 中。
如何利用 commitid 功能(在标准 CVS 中)?
例如:
除了设置它之外,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。可以使用log
andstatus
命令检索 commitid;请参阅 *note log:: 和 *note File status::。
其他工具可以解析输出cvs log
并确定给定提交的 commitid。特别是,在单个cvs commit
命令中提交的更改将具有相同的 commitid。我可以想象这对于将 CVS 存储库转换为其他系统(如 SVN 或 Git)的工具很有用。
但此类工具必须允许由不具备此功能的旧版本 CVS 创建的存储库。例如,我在 CVS 中维护的一个文件有 211 个提交,其中前 186 个没有提交 ID;显然那是我切换到更新版本的 CVS(2007 年末或 2008 年初)的时候。
一起提交的更改也应该共享相同的时间戳,尽管这不太可靠。将时间戳与作者结合起来应该更可靠一些,但仍然不完美。