0

我正在尝试按照本教程将 CVS 转换为 GIT:http: //www.catb.org/~esr/reposurgeon/dvcs-migration-guide.html

总体上看起来不错,但是对于某些 CVS 标记(看起来它从存储库中的某个时间点开始,然后再执行)而不是 GIT 标记,创建了 GIT 分支。

知道为什么首先创建分支而不是标签吗?

这些主要是由自动构建工具(基本上每个构建一个)+发布分支(每个发布一个)构建时创建的分支。有数百个,所以我想确保它们不是作为分支创建的,而是作为标签创建的。

reposurgeon 是否能够做到这一点,甚至是适合这项工作的工具吗?

仅供参考 - 做这个答案:https ://stackoverflow.com/a/16404411/3821009提供:

git tag BRANCH_A BRANCH_A
git branch -d BRANCH_A

结果是:

error: The branch 'BRANCH_A' is not fully merged.
If you are sure you want to delete it, run 'git branch -D BRANCH_A'

所以看起来这里有些东西没有正确连接。你知道这可能是什么原因吗?

4

2 回答 2

0

使用cvs2git对您来说可能是一个更好的选择。
它会将您的 CVS 标签转换为 git 标签,假设 CVS 标签代表 repo 的一个修订版(或者可以很容易地伪造)。否则,您最终会得到一个TAG.FIXUP分支,可以按照链接的“使用”部分中的说明进行处理。

于 2015-08-03T18:53:30.207 回答
0

reposurgeon 的作者在这里,我才意识到这个问题。

您遇到的不是重新出现的错误。当 cvs-fast-export 发现一个未在整个 master 集合中复制的标签时,这就是 cvs-fast-export 合作的方式……这意味着 CVS 操作员错误损坏了存储库元数据。

cvs-fast-export 试图通过为不完整的标签创建一个单提交分支来应对。手册页上描述了这种行为,但我想如果没有看过它的上下文很容易错过。

于 2018-07-13T16:34:10.827 回答