以最小的冻结时间在SVN储存库上将巨大的SVN储存库迁移到GIT

问题描述 投票:1回答:2

我正在从事一个已经运行了很长时间的项目。它托管在SVN上。它具有24K修订版。组织中的某人认为(我同意),如果我们可以将组织中的所有项目从SVN迁移到GIT,那将是很好的。说起来容易做起来难。我们的项目对于维持库存至关重要,并将在下个季度投入生产。迁移时间表设置为12月底。这意味着我们既没有等待时间,也没有冻结SVN信息库的奢望。我决定采用以下方法:

  1. 使用svnrdump创建当前存储库的转储。这大约花费了3小时。
  2. 将转储加载到本地svn存储库。这大约花费了12小时。
  3. 使用svn将本地git存储库转换为git svn clone。这需要超过73小时。
  4. 将此git存储库推送到remote

现在在执行这些步骤时,对现有的远程SVN存储库进行了一些新的提交。有没有办法,我可以将这些新更改合并到新的远程git存储库中。值得注意的是,我们要保留SVN的所有提交历史记录。如果有办法做到这一点,那就意味着我们只需要冻结当前的远程SVN几个小时。我还要提到,我们的新git存储库托管在gitlab上。有更好的方法吗?

git svn gitlab git-svn
2个回答
1
投票

考虑differences between svnrdump and svndump,首先检查在本地完成的(直接在服务器上)svnrdump(如果您确实有权访问所述服务器)是否不会更快。

然后,对于同时创建的少量提交/修订,您可以执行svndump

仅转储修订版或修订版范围作为与先前修订版的差异,而不是默认值,默认值是开始转储修订版范围,并完全扩展该修订版中存储库的所有内容。

您可以将其转换为它自己的Git存储库,将其提取到当前的Git存储库中,并在普通Git分支之上重新存储/樱桃选择孤立的分支,以保留历史记录。 (svndump


0
投票

JFYI:处于“同步”模式的SubGit将为您提供更改的自动镜像和零停机时间

© www.soinside.com 2019 - 2024. All rights reserved.