git - SVN -> 具有结构变化的 Git 迁移

标签 git svn migration git-svn

我目前有以下 SVN 结构:

  • 项目1
    • 分支机构
    • 中继
    • 标签
  • 项目2
    • 分支机构
    • 中继
    • 标签
  • 更多的东西
    • 分支机构
    • 中继
    • 标签

最初有这个结构:

  • 项目
    • 分支机构
    • 后备箱
      • 项目1
      • 项目2
      • 更多资料
      • 更多
    • 标签

我正在尝试获取独立的 Git 存储库,一个用于“项目 1”,另一个用于“项目 2”。

这个问题与另一个 SO 问题不同但相似:Svn -> git migration with several trunk/branches/tags

git svn clone 操作仅从“SVN head”导入到结构重构。

我需要避免迁移整个历史的第一部分,因为我的 svn 存储库很大,我试过了,但它需要几天时间,而且 GIT 通常会因内存不足异常而崩溃。

有没有办法跟踪 svn 移动/结构重构操作并获得完整的“项目 N”历史记录,避免其余部分?

谢谢!

最佳答案

如果你想做一次性转换(反对使用 Git 作为前端,同时仍然在后台保留 SVN 服务器)你不应该使用 git-svn。

最好使用合适的迁移工具,那里有几个,其中几个名为 svn2git。我在这方面取得了很好的经验:http://techbase.kde.org/Projects/MoveToGit/UsingSvn2Git您几乎可以做任何您想做的事情,除了通过一次运行将路径放置在两个结果存储库中,但即使通过两次单独的运行,这也是可能的。

如果您想首先分析您的历史结构以确保在您知道之前确实没有其他布局,您可能想先使用此博客条目中的 svneverever:http://blog.hartwork.org/?p=763 ,这对我从一开始就不知道的存储库的 SVN 到 Git 转换非常有帮助。

关于git - SVN -> 具有结构变化的 Git 迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16651192/

相关文章:

git - 我可以在之前的所有提交中更改我的名字和姓氏吗?

git - 如何恢复使用 strategy=ours 的 merge ?

linux - 从 Windows 到 Linux 的 SVN 预提交 Hook

migration - 将 Log4J log.debug 语句迁移到 SLF4J 的参数化消息?

laravel - 如何删除多列上的唯一键?

eclipse - Egit 在 Eclipse 中丢失树

git - 从版本控制窗口 stash git 子模块更改

svn - 使用 SSPI 模块 HTTP 与 HTTPS 的颠覆

PHP exec()没有在输出中返回错误消息

asp.net-mvc - 使用 MVC 3.0 与继续使用 .NET 4+ 的长期/短期风险因素?