将大型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
答
如果你有机会到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
。
谢谢,那就是诀窍! – 2015-02-09 17:01:49