SVN以嵌套SVN:外部迁移



从带有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作者通过电子邮件转换或预防措施而无需转换(例如,吉特拉布(Gitlabauthor@<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转换为您想要的内容。

最新更新