将大型SVN回购迁移到git

将大型SVN回购迁移到git

问题描述:

我有一个很大的SVN回购(140GB左右),它拥有许多项目,并且不遵循svn推荐的目录结构。从所有这些数据(包括二进制文件,发布版本和依赖关系)中,我真正关心的是在一个特定的路径上,实际上与其他任何事情相比,其历史都很短。将大型SVN回购迁移到git

迄今为止我读过的关于SVN到Git迁移的所有文档都要求我将整个SVN回购协议拖到Git上,但这是永久占用,计时,OOM和崩溃。有什么办法可以只为这个特定的文件夹提取历史记录吗?

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

通--no-最小化的URL,E.G,:

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

谢谢,那就是诀窍! – 2015-02-09 17:01:49

如果你有机会到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