使用没有主干标签和分支的 SVN 存储库从 SVN 迁移到 Git

Posted

技术标签:

【中文标题】使用没有主干标签和分支的 SVN 存储库从 SVN 迁移到 Git【英文标题】:Migrating from SVN to Git with SVN repository having no trunk tags, and branches 【发布时间】:2017-04-08 06:52:30 【问题描述】:

我正在尝试将我的 SVN 存储库迁移到 Git,以保持所有历史记录完好无损。我的 SVN 存储库具有非标准布局,项目文件直接位于存储库根目录下。没有标签和分支。

我首先使用git svn clone 来迁移repo。命令成功完成,但是当我执行git branch -r 时,我什么也没得到。

接下来我使用了svn2git。我首先尝试将它与--rootistrunk 选项一起使用,但命令没有运行,我在控制台中看不到任何内容。我在某处读到--rootistrunk 有一些问题可以使用 svn2git <svn-url> trunk / --no-minimize-url --verbose。该命令运行但最后失败并显示错误消息:

svn2git 错误:pathspec 'master' 不匹配任何已知的文件 混帐。命令失败:git checkout -f master。

谁能建议我如何解决这个问题?

【问题讨论】:

【参考方案1】:

对于非标准 SVN 布局,请尝试 subgit import

SubGit 比git svn 更健壮(并且有免费版本,可以一次性导入 dvn 到 Git)

【讨论】:

谢谢 VonC 我会试试的。与此同时,我还遇到了另一个问题。我正在尝试对一个非常大的 SVN 存储库进行 git svn 克隆。我使用 git svn clone 完成了早期的迁移,并保留了完整的分支、标签和历史记录,并且一切顺利。但是这一次脚本运行了一段时间后抛出了一个错误:libsvn: Out of memory - terminating application.18 [main] perl 13884 cygwin_exception::open_stackdumpfile: Dumping stack trace to perl.exe.stackdump如果有人遇到过类似的错误我将不胜感激任何建议。 @Anshul Strange:在这种情况下最好问一个新问题。

以上是关于使用没有主干标签和分支的 SVN 存储库从 SVN 迁移到 Git的主要内容,如果未能解决你的问题,请参考以下文章

将特定的 SVN 分支迁移到 GIT(2018 年迁移的主干)

符号歧义和回购布局

SVN 主干(trunk)分支(branch )标记(tag)

正确使用分支和主干的 SVN

SVN分支/主干Merge操作小记

svn树冲突