从Git迁移到SVN

时间:2013-10-02 23:03:56

标签: git svn migration

我有一个项目需要将Git存储库移植到SVN。 我尝试了几种在线发布的方式,但它们都不适合我。 如果有人能提供帮助,我们将非常感激。

我遵循了

指南
  • 将Git repo克隆到工作副本
  • 进入副本
  • 将头部倒回第一次提交
  • cherry挑选所有提交
  • 执行git svn rebasegit svn dcommit

这种方法的问题在于我的Git存储库具有复杂的历史记录。 有许多分支出局和合并。 当我选择樱桃时,它只会回收最终存储库的一部分。

问题:有没有办法避免采摘樱桃和git svn rebase? 也许用其他东西替换它?

我关注此帖子:Migrate a Git repo to an svn one

这篇帖子基本上是

  • 做了git svn clone
  • 在克隆的工作副本中获取了git repo
  • 将master分支到old_master
  • 将old_master的所有提交应用于主(git svn rebase
  • 做了git dcommit

这种方法的问题类似于我在第一篇中所遇到的问题: 当我做git svn rebase时,会有很多冲突。 此外,当我跳过所有冲突时,git dcommit失败。 它告诉我:Unable to determine upstream svn information from HEAD history.

我不知道从这一点开始还有什么可尝试的。 如果您发现我做错了或有其他办法,请提出任何建议。 赞赏它!!

2 个答案:

答案 0 :(得分:4)

我想你别无选择,只能失去一些git历史--SVN无法处理那么多信息。

我想到的唯一一个将问题委托给第三方的黑客就是利用GitHub's SVN support来缓解你的任务。

我建议您真正考虑是否需要保留历史记录,或者需要完整的历史记录。基于此,我只是压缩/重新定义冲突的提交(或单个提交中的整个历史记录)并从中开始。

愿叉子和你在一起!

答案 1 :(得分:1)

嗯,你必须看看this question。最佳答案是:

  

转换这个方向的一般问题是,Git存储库可以包含的不仅仅是修订版的线性历史记录,正如Subversion所期望的那样。具有不同历史和频繁合并提交的多个祖先都是可能的,这些都无法在Subversion存储库中轻松表示。

     

对于在Git存储库中确实存在线性历史记录的简单情况,您可以使用git-svn dcommit将批次推送到另外空的Subversion存储库。

最好的问候。