使用 cvs2git (Python 2.7.5) 从 CVS 迁移到 Gitlab 时显示以下提交消息。在迁移时,我注意到 cvs2svn 正在创建一些额外的提交,并带有相同的以下消息,这似乎是不必要的。
为什么它会在迁移期间创建不需要的提交?
This commit was manufactured by cvs2svn to create branch 'BRANCH_DEV_2014'.
使用 cvs2git (Python 2.7.5) 从 CVS 迁移到 Gitlab 时显示以下提交消息。在迁移时,我注意到 cvs2svn 正在创建一些额外的提交,并带有相同的以下消息,这似乎是不必要的。
为什么它会在迁移期间创建不需要的提交?
This commit was manufactured by cvs2svn to create branch 'BRANCH_DEV_2014'.
CVS 允许您标记/分支所有文件的某些子集。或标记/分支在不同时间存在的不同版本的文件。(理论上,您可以创建一个仅标记一半文件的标签,其中 1/3 可能是 2003 年的版本,另外 2/3 可能是 2019 年的版本。)
这可能是有意的,也可能是无意的,因为 CVS 那样有点混乱。
另一方面,Git 强制要求所有标签/分支都是从单个时间点在存储库的特定一致状态上创建的。
在 cvs2git 进程中,当创建一个标签/分支时,如果该工具无法找到代表这个新标签/分支的整个 repo 的任何特定时间点和状态,cvs2git 将创建一个虚拟提交以允许它随后标记/分支.
例子:
如果您在 CVS 中有两个文件 a.class 和 a_test.class 并且您对这两个文件都有三个提交
然后你v.1.0.0
基于 Commit 2 创建了一个标签,除了你只标记了 a.class,你没有标记 a_test.class。
当您将其转换为 git 时,git 无法处理此问题,因此它必须创建一个虚拟提交。
o - Initial commit
|
o - Commit 2
|\
| o - Dummy commit, removes a_test.class so there's just a.class. Tagged v.1.0.0
|
o - Commit 3