将具有公共干线的巨大SVN仓库迁移到Git

时间:2015-08-10 15:39:07

标签: git svn version-control version-control-migration

我需要将具有提交历史的非常庞大的SVN中继迁移到Git。 SVN存储库具有以下结构:

branches/
    project1-branch1
    project1-branch2
    project2-branch1
    project2-branch2
tags/
    project1-1.0
    project1-1.1
trunk/
    project1/
    project2/
    project3/
    project4/

我真的只想将主干中的每个项目移动到相应的Git存储库 - 不要真正关心标签和分支。如果我错了,请纠正我,但我相信Git对于非常大的存储库并不适用。

过去曾有类似的问题,但他们已经很老了,只是想知道是否有人对解决这个问题有新的看法。我尝试了一些像SubGit这样的工具,但他们认为每个项目都在自己的文件夹中,并且有一个主干,分支和标签层次结构。当我尝试明确指定trunk文件夹并将标记和分支指向空文件夹时,SubGit会在一段时间后停止响应。

2 个答案:

答案 0 :(得分:2)

由于版本3.0 SubGit可以使用单个目录(在早期版本中,它需要在编写时使用trunk,branches和tags)。要做到这一点,你可以运行

$ subgit configure --svn-url <URL>/trunk/project1 --layout directory repo1.git
# adjust repo1.git/subgit/config configuration
$ subgit install repo1.git

如果您的存储库没有遵循最佳做法并且有很多文件没有设置svn:eol-style,那么您可能最好添加

[translate]
  eols=false

在上面“调整”步骤的repo1.git / subgit / config文件末尾的选项。这将关闭EOLs翻译。

当看起来SubGit没有进展时,它可能会检查你的行李箱,因为你说的很大。它写入一些〜/ .subgit / logs /文件,因此您可以通过查看来跟踪进度。获取第一个修订版后,它会显式显示进度。

免责声明:我是SubGit开发人员之一。

答案 1 :(得分:1)

如此简单的任务,你可以

  1. 阅读Git-svn doc
  2. 在基本示例部分
  3. 中查看您的案例(跟踪单个网址)
  4. 尝试对{/ li>中的每个项目使用git svn clone URL/trunk/project*