将大型SVN存储库迁移到git

时间:2015-02-09 14:05:52

标签: git svn version-control

我有一个大型SVN仓库(大约140GB),它包含许多项目,并且不遵循svn推荐的目录结构。从所有这些数据(它包括二进制文件,发布版本和依赖项),我真正关心的是一条特定的路径,与其他所有路径相比,它实际上具有非常小的历史。

到目前为止,我在SVN-to-Git迁移中读到的所有文档都要求我将整个SVN回购拉到Git,但这需要永远,超时,淘汰OOM和崩溃。有什么方法可以只为这个非常具体的文件夹提取历史记录吗?

或者有没有办法可以将此文件夹的SVN历史记录单独导出到新的SVN仓库并从那里开始git迁移?

2 个答案:

答案 0 :(得分:1)

传递--no-minimize-url,E.G。,:

git svn clone <SVN_URL>/your/specific/folder --no-minimize-url --no-metadata folder

答案 1 :(得分:0)

如果您有权访问Subversion存储库(而不仅仅是工作副本),我建议使用svn2git,因为它会更快。

您的规则文件将类似于

create repository specific-folder.git
end repository

# note: trailing slash is important
match /trunk/foo/bar/baz/specific-folder/
  repository specific-folder.git
  branch master
end match

# ignore everything else
match /
end match

然后你的命令将是

svn-all-fast-export --identity-map=my-users --rules=specific-folder.rules \
  --stats --add-metadata /full/path/to/subversion/repo

请注意,您的新git存储库将包含specific-folder内容