2013-10-02 254 views
5

我有一个项目需要将Git存储库移植到SVN。 我尝试了几种在线发布的方式,但没有一个适合我。 如果有人可以帮忙,它会非常感激。从Git迁移到SVN

我也跟着上

  • 指导克隆一个Git回购的工作副本
  • 进入副本
  • 倒带头到第一次提交
  • 采摘樱桃的所有提交
  • 正在做git svn rebasegit svn dcommit

这个方法的问题是我的Git仓库有一个复杂的历史。 有许多分支和合并。 当我做樱桃采摘时,它只回收最终存储库的一部分。

问:有没有办法避免采摘樱桃和git svn rebase? 也许用别的东西代替它吧?

我跟着这个网络发帖:Migrate a Git repo to an svn one

这篇文章基本上是

  • 没有git svn clone
  • 获取的克隆工作副本git的回购
  • 支师傅old_master
  • 将所有从old_master提交给主设备的提交(git svn rebase
  • 没有git dcommit

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

我不能告诉还有什么要尝试从这一点上。 如果您发现我做错了任何事情或有其他方法可以做,请给出建议。 赞赏它!

回答

3

我想你别无选择,只能要宽松一些你的git的历史 - SVN无法处理这么多的信息。

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

我建议你真的认为,如果你需要保持你的历史,或者它需要多么完整。基于此,我只是将冲突提交(或单个提交中的整个历史记录)压扁/重新绑定并从此开始。

叉可以和你在一起!

+0

这太棒了!一些非常简单并且适合我所有需求的东西!非常感谢! – curlingbunny

+0

因为SVN可以处理那么多的信息,实际上可以处理比Git更多的信息,因此被低估。主要的问题是Git不会跟踪重命名和移动。因此,迁移可能很复杂。 – bahrep

+0

Git检测重命名而不是坚持与提交的操作,所以无论你使用git mv或只是一个普通的mv并不重要。 http://stackoverflow.com/questions/2314652/is-it-possible-to-move-rename-files-in-git-and-maintain-their-history/13544573 – dev

1

那么,你必须看看this question。最好的答案是:

做转换这个方向的一般问题是,Git存储库可以包含不仅仅是一个线性历史的修订,如Subversion所期望的。具有不同历史和频繁合并提交的多个祖先都是可能的,这在Subversion存储库中很难表现出来。

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

此致敬礼。