使用Git-LFS进行SVN到Git的迁移

12

我们有一个巨大的 SVN 仓库(~100GB),现在想要将其迁移到 Git。问题是,仓库中包含了许多二进制文件,这些二进制文件分布在整个文件夹树中。

我们最初的想法是将这些二进制文件移动到 Git-LFS 中,但在此之前需要解决一些问题:

  1. 我们需要保留提交历史记录。是否可以在以前的提交中用 LFS 文件指针替换二进制文件?
  2. 我们正在使用几个分支。在检出期间,git-lfs 是否会缓存现有的二进制文件,以便于在不同的分支之间进行检出而无需重复下载这些二进制文件?
  3. Git-LFS 是否支持在不同的分支中使用相同的二进制文件,或者应该为服务器上的每个分支都复制一份二进制文件?
  4. 在检出过程中是否可以部分检出二进制文件?因此,如果需要,只会下载二进制文件的某些部分。
  5. 在服务器上,应该如何存储这些二进制文件?是否需要一个服务器应用程序来存储这些二进制文件,或者简单的 HTTP/FTP 服务器就可以了?

谢谢!

1个回答

3
我认为我已经找到了答案,尽管我自己还没有完成测试(我们的存储库的第一步需要很多小时)。这个技巧来自于Atlassian的文档:
https://confluence.atlassian.com/bitbucket/use-bfg-to-migrate-a-repo-to-git-lfs-834233484.html
这是针对Bitbucket的,但我想它适用于任何git存储库。 步骤1:首先要将SVN项目转换为git。可以使用git-svn来完成,如下所述:
https://john.albin.net/git/convert-subversion-to-git
该页面还介绍了如何传递作者并添加允许在git作者中使用的额外详细信息。 步骤2:现在按照上述Atlassian文档中的说明使用“BFG Repo-Cleaner”将历史记录中的所有“大文件”替换为指向git LFS的引用。这是一个更简单的工具,可以做一些也可以使用git-filter-branch工具完成的事情。
我可以在这里给出逐步说明,但我只会从其他来源复制,而且我还没有真正尝试过(正在运行)。当我看到这里的结果时,我会再次更新。 编辑:我忘记在近两年的测试结束后更新这个问题,刚刚因为得到了点赞才注意到。据我记得,我最终使用了git lfs migrate而不是BFG将大文件从存储库中迁移到git LFS。(https://github.com/git-lfs/git-lfs/wiki/Tutorial)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接