使用Git-LFS将SVN转换为Git

问题描述:

我们有一个巨大的SVN存储库(〜100GB),我们正尝试迁移到Git。问题在于,回购包含大量遍布文件夹树的二进制文件。使用Git-LFS将SVN转换为Git

,我们首先想到的就是把二进制移动到Git的-LFS,但有一些是我们需要解决的问题之前:

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

感谢

我想我已经找到了这个答案,但没有完成测试它自己(的第一步需要许多小时我们的代码库)。诀窍在于从这个Atlassian的文档:

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

这是专门针对到位桶,但我想它会与任何的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工具也可以完成的一些更简单的工具。

我可以在这里给出分步说明,但我只是从其他来源进行复制,而我自己还没有真正尝试过(现在正在运行)。当我在这里看到结果时,我会再次更新。