11

我们有一个巨大的 SVN 存储库(~100GB),我们正在尝试迁移到 Git。问题是,repo 包含大量分布在文件夹树中的二进制文件。

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

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

谢谢

4

1 回答 1

1

我想我已经找到了答案,虽然我自己还没有完成测试(第一步需要我们的存储库很多小时)。诀窍来自这个 Atlassian 文档:

https://confluence.atlassian.com/bitbucket/use-bfg-to-migrate-a-repo-to-git-lfs-834233484.html

这是特定于 bitbucket 的,但我想它可以与任何 git 存储库一起使用。

第一步:第一步是将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 将大文件从 repo 迁移到 git LFS。(https://github.com/git-lfs/git-lfs/wiki/Tutorial

于 2017-07-10T07:42:09.070 回答