将大型 SVN 存储库迁移到 git

Migrating a large SVN repo to git

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

到目前为止,我读过的所有关于 SVN 到 Git 迁移的文档都要求我将整个 SVN 存储库拉到 Git,但这需要永远、超时、OOM 和崩溃.有什么办法可以只提取这个特定文件夹的历史记录吗?

或者有什么方法可以将此文件夹的 SVN 历史单独导出到新的 SVN 存储库并从那里开始 git 迁移?

通过 --no-minimize-url,例如:

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

如果您可以访问 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 内容