迁移到Git时如何处理部分svn:externals?

时间:2017-08-03 06:42:12

标签: git svn git-subtree svn-externals

我想将SVN存储库导入GitHub Enterprise存储库

有很多与此问题相关的问题,其中大多数都可以用Git子模块或Git子树来解决。

在我的情况下,我有两个存储库:

  • 主项目存储库
  • 模块存储库(超过2 GB的大型SVN存储库)

此模块存储库具有以下架构:

K73%2FN7gAtqElUW0GQQ6lhelTSHIoKiP%2FJrTbxX0XZNgw8VKuib5fr1Y2zjRj4iB38s2iVXssuF+PbEA+swwyfA%3D%3D

对于项目,foolib/ moduleA/ ... moduleB/ ... ... 中只有少数模块用作foolib。例如,此主项目仅使用svn:externals中的moduleA

正如本question所述,一种可能的解决方案是使用稀疏结账。我猜测Git子树也会做到这一点。不幸的是,它并没有解决主要问题。

如果我的项目非常小,只要我从foolib获得某些内容,即使使用了sparce-checkout,我也会检索foolib的整个历史记录(例如 2 GB)。此问题与SVN不存在,因为foolib属性仅获取所需内容,而不是整个历史记录。

我可以想象做一些愚蠢的事情,比如使用svn:externals中列出的提交动态地重新创建本地稀疏存储库。但我认为这不是一个好的解决方案。

在Git中获取类似行为的正确工作流程是什么,而不必获取git log --follow foolib/moduleA我只需要几个模块的所有内容的整个历史记录?

0 个答案:

没有答案