11

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

我按照指南

  • 将 Git 存储库克隆到工作副本
  • 进入副本
  • 将头部倒回到第一个提交
  • 挑选所有提交
  • git svn rebasegit svn dcommit

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

问题:有什么办法可以避免樱桃采摘和git svn rebase?也许用别的东西代替它?

我关注了这篇网络文章:将 Git 存储库迁移到 svn 存储库

这篇文章本质上

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

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

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

4

2 回答 2

6

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

我唯一想到的将问题委托给第三方的技巧是利用GitHub 的 SVN 支持来简化您的任务。

我建议您认真考虑是否需要保留您的历史,或者它需要有多完整。基于此,我只是压缩/重新设置冲突的提交(或单个提交中的整个历史)并从那里开始。

愿叉子与你同在!

于 2013-10-03T03:53:43.663 回答
2

好吧,你必须看看这个问题。最佳答案是:

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

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

此致。

于 2016-03-24T13:01:53.370 回答