我尝试按照本教程将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'
所以看起来这里没有正确附加的东西。你知道这可能导致什么吗?
答案 0 :(得分:0)
使用cvs2git对您来说可能是更好的选择
它会将您的CVS标记转换为git标记,假设CVS标记代表repo的一个修订版(或者可以很容易地伪造)。否则,您最终会得到TAG.FIXUP
分支,可以按照链接使用部分中的说明进行处理。
答案 1 :(得分:0)
这里是reposurgeon的作者,我才意识到这个问题。
您遇到的不是reposurgeon错误。这就是cvs-fast-export遇到找不到在整个主模板集之间复制的标签时的声音。这意味着CVS操作员错误损坏了存储库元数据。
cvs-fast-export尝试通过为不完整标签创建单提交分支来解决此问题。手册页上对此行为进行了说明,但是我想如果没有看到它的上下文,很容易错过。