2

我需要将一个非常巨大的带有提交历史的 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,但他们假设每个项目都在它自己的文件夹中,并且有一个主干、分支和标签层次结构。当我尝试明确指定主干文件夹并将标签和分支指向一个空文件夹时,SubGit 会在一段时间后停止响应。

4

2 回答 2

2

3.0版开始,SubGit 可以使用单个目录(在早期版本中,它需要您编写的主干、分支和标签)。为此,您可以运行

$ 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 文件的末尾。这将关闭 EOL 翻译。

当 SubGit 似乎没有进展时,它可能会检查您的后备箱,正如您所说的那样,它是巨大的。它写入一些 ~/.subgit/logs/ 文件,因此您可以通过查看那里来跟踪进度。获取第一个修订版后,它会明确显示进度。

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

于 2015-08-10T15:57:36.887 回答
1

对于这样简单的任务,您可以

  1. 阅读Git-svn 文档
  2. 在基本示例部分查看您的案例(跟踪单个 URL)
  3. 尝试git svn clone URL/trunk/project*用于主干中的每个项目
于 2015-08-10T17:12:54.430 回答