将具有公共主干的巨大 SVN 存储库迁移到 Git
Migrate huge SVN repo with common trunk to Git
我需要将具有提交历史的非常巨大的 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 只是在一段时间后停止响应。
自版本 3.0 以来,SubGit 可以处理单个目录(在早期版本中,它需要 t运行k、分支和您编写的标签)。为此,您可以 运行
$ 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 文件在上面的 "adjust" 步。这将关闭 EOL 翻译。
当 SubGit 似乎没有进展时,它可能会检查您的 t运行k,正如您所说,它很大。它写入一些 ~/.subgit/logs/ 文件,因此您可以通过查看那里来跟踪进度。获取第一个修订版后,它会明确显示进度。
免责声明:我是 SubGit 开发人员之一。
这么简单的任务你可以
- 阅读Git-svn doc
- 在基本示例部分查看您的案例(曲目单曲 URL)
- 尝试对主干中的每个项目使用
git svn clone URL/trunk/project*
我需要将具有提交历史的非常巨大的 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 只是在一段时间后停止响应。
自版本 3.0 以来,SubGit 可以处理单个目录(在早期版本中,它需要 t运行k、分支和您编写的标签)。为此,您可以 运行
$ 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 文件在上面的 "adjust" 步。这将关闭 EOL 翻译。
当 SubGit 似乎没有进展时,它可能会检查您的 t运行k,正如您所说,它很大。它写入一些 ~/.subgit/logs/ 文件,因此您可以通过查看那里来跟踪进度。获取第一个修订版后,它会明确显示进度。
免责声明:我是 SubGit 开发人员之一。
这么简单的任务你可以
- 阅读Git-svn doc
- 在基本示例部分查看您的案例(曲目单曲 URL)
- 尝试对主干中的每个项目使用
git svn clone URL/trunk/project*