【问题标题】:cvs2git was creating some extra commits while migrating CVS to Gitcvs2git 在将 CVS 迁移到 Git 时创建了一些额外的提交
【发布时间】:2019-09-23 10:30:07
【问题描述】:

使用 cvs2git (Python 2.7.5) 从 CVS 迁移到 Gitlab 时显示以下提交消息。迁移时,我注意到 cvs2svn 创建了一些额外的提交,并带有相同的以下消息,这似乎是不必要的。

为什么它会在迁移期间创建不需要的提交?

  This commit was manufactured by cvs2svn to create branch 'BRANCH_DEV_2014'.

【问题讨论】:

    标签: cvs2git git-fast-import


    【解决方案1】:

    CVS 允许您标记/分支所有文件的某个子集。或标记/分支在不同时间存在的不同版本的文件。 (理论上,您可以创建一个仅标记一半文件的标签,其中 1/3 可能是 2003 年的版本,另外 2/3 可能是 2019 年的版本。)

    这可能是有意的,也可能是无意的,因为 CVS 那样有点混乱。

    另一方面,Git 强制要求所有标签/分支都是从一个时间点在存储库的特定一致状态上创建的。

    在 cvs2git 进程中,当创建一个标签/分支时,如果该工具无法找到代表这个新标签/分支的整个 repo 的任何特定时间点和状态,cvs2git 将创建一个虚拟提交以允许它然后标签/分支。


    例子:

    如果您在 CVS 中有两个文件,a.class 和 a_test.class,并且您对这两个文件都有三个提交

    1. a.class a_test.class --- 初始版本
    2. a.class a_test.class --- 提交 2
    3. a.class a_test.class --- 提交 3

    然后你基于 Commit 2 创建了一个标签v.1.0.0除了你只标记了 a.class,你没有标记 a_test.class。

    当你把它转换成 git 时,git 没有办法处理它,所以它必须创建一个 dummy 提交。

    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
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-05-21
      • 1970-01-01
      • 2021-08-16
      • 2010-09-27
      • 2023-03-12
      相关资源
      最近更新 更多