我们最近的项目(大约 4 个月前)从 SVN 转移到了 git。我们最初的迁移是由一个具有基本 git 知识的人完成的。我们的 git repo 现在有点混乱(有一个提交删除了 100 万个文件,差异就像 25G)。
我想修复git repo,因为blame 退出时出现内存不足错误,更不用说sonarqube 需要很长时间才能运行。
项目布局为:
我们在 svnroot 下的子目录中有几个模块。
svnrepo/
module1/
trunk
branches/
...
tags/
1.x
...
module2/
trunk
branches/
...
tags/
1.x
...
现在我们有一个“大” git repo,其中所有模块都是子目录。
我无法导入整个 svnroot(我只对树干感兴趣),并尝试了包括 git svn 在内的几种工具,但没有奏效。
我读过一个关于同样问题的问题:https ://serverfault.com/questions/420828/migrate-multiple-svn-repositories-into-single-git-repository
我做了什么:
管理导入子目录(使用 svn2git rubygem)作为 git repos,并使用过滤器分支移动子目录中的文件,并合并开发中的所有内容。删除 100 万个文件后,我检查了旧的仓库。这是基础。
问题:
为了替换我们当前“损坏”的 repo,我需要确保每次提交在 git 迁移之后完成,都将迁移到新的 repo。
我试图挑选提交,但看起来我会丢失历史记录,因为它只保留合并提交的差异。
问题是:
我如何将提交(从旧的存储库,在该特定提交之后)迁移到新的存储库,其中分支和合并提交及其所有历史记录也将被复制?