从带有SVN外部的SVN迁移到git。每个SVN外部可能都有自己的SVN:外部。没有指南如何在此处使用外部迁移SVN来git,我觉得有用。每个分支可能都有自己的分支标签。迁移整个存储库的最佳方法是什么?我正在查看主要存储库的git SVN克隆,添加了每个外部克隆的git subsodules。但是由于外部嵌套了,我不知道最好的解决方案是什么。到目前为止使用的脚本:
https://github.com/eneroth/git-externals
https://github.com/eneroth/git-externals
我有自己的研究,但我没有找到OpenSource的多合一解决方案。有很多单一的"单面"解决方案,这些解决方案不涵盖SVN-to-git转换的许多方面:
-
svn:externals
-
svn:ignore
转换为.gitignore
- 自动SVN作者通过电子邮件转换或预防措施而无需转换(例如,吉特拉布(Gitlab
author@<repo-guid>
git-svn
工具之后) - SVN标签/分支转换为本机Git标签/分支
- 处理转换碰撞或无法转换
- 处理2向转换(GIT-2-SVN)
- 处理转换恢复(在提交为SVN/GIT存储库之一之后)
- 无法访问裸仓库或不访问SVN存储库根
- 处理手动转换启动/简历(通过脚本或可执行文件),而不是独立服务,反之亦然
- 支持从/转换为流行的SVN/GIT枢纽,例如SourceForge,GitHub,Gitlab,Bitbucket
...等等。
这是一个很大的领域,要开启或研究自己,并且可以消耗很多时间来至少从SVN到SVN-GIT或其他任何转换中找出您真正需要或想要的东西。
对我自己,我发现这很接近我想要的东西:https://techbase.kde.org/projects/movetogit/usingsvn2git
规则文件的示例:https://cgit.kde.org/kde-ruleset.git/tree/kde-rules-main
帐户图的示例:https://cgit.kde.org/kde-ruleset.git/tree/account-map
脚本示例要从本地裸git存储库(由KDE工具生成)包装/推到远程git存储库:https://phabricator.wikimedia.org/diffusion/osof/browse/master/master/svn2git/scripts
第三方项目要在切片之前扫描SVN存储库:
- https://github.com/hartwork/svneverevereverever
其他第三方项目的一些端口:
- https://github.com/mazong1123/svn2gitnet(Ruby工具的点网端口)
- http://rsvndump.sourceforge.net(例如
svnrdump
,但即使您的存储库访问仅限于此子目录,也允许子目录的转储)
)
一些独立的有趣实现:
- https://gitlab.com/esr/reposurgeon(作者的一些比较:http://www.catb.org/~esr/~esr/reposurgeon/features.html)
但仍然有很多未解决的方面或缺点喜欢:
- 支持git
subtree
/submodules
/etc等将SVN储备库切成一个git root reto,并引用了其他小git repos - 将
svn:externals
自动转换为GIT子树(KDE项目的规则确实支持手册或半自动(正则表达式)转换)
如果您决定使用KDE转换器,则可以编写一个脚本来准备每个修订范围的规则,该范围您想要的svn:externals
转换为您想要的内容。