我正在从事一个已经运行了很长时间的项目。它托管在SVN上。它具有24K修订版。组织中的某人认为(我同意),如果我们可以将组织中的所有项目从SVN迁移到GIT,那将是很好的。说起来容易做起来难。我们的项目对于维持库存至关重要,并将在下个季度投入生产。迁移时间表设置为12月底。这意味着我们既没有等待时间,也没有冻结SVN信息库的奢望。我决定采用以下方法:
svnrdump
创建当前存储库的转储。这大约花费了3小时。svn
存储库。这大约花费了12小时。svn
将本地git
存储库转换为git svn clone
。这需要超过73小时。git
存储库推送到remote
。现在在执行这些步骤时,对现有的远程SVN
存储库进行了一些新的提交。有没有办法,我可以将这些新更改合并到新的远程git
存储库中。值得注意的是,我们要保留SVN的所有提交历史记录。如果有办法做到这一点,那就意味着我们只需要冻结当前的远程SVN几个小时。我还要提到,我们的新git
存储库托管在gitlab
上。有更好的方法吗?
考虑differences between svnrdump
and svndump
,首先检查在本地完成的(直接在服务器上)svnrdump
(如果您确实有权访问所述服务器)是否不会更快。
然后,对于同时创建的少量提交/修订,您可以执行svndump
。
仅转储修订版或修订版范围作为与先前修订版的差异,而不是默认值,默认值是开始转储修订版范围,并完全扩展该修订版中存储库的所有内容。
您可以将其转换为它自己的Git存储库,将其提取到当前的Git存储库中,并在普通Git分支之上重新存储/樱桃选择孤立的分支,以保留历史记录。 (svndump
)
JFYI:处于“同步”模式的SubGit将为您提供更改的自动镜像和零停机时间