SVN到GIT,标签转换为分支

SVN到GIT,标签转换为分支,git,svn,git-svn,Git,Svn,Git Svn,我曾试图在某地和其他地方找到类似的情况,但都是空手而归,但我无法想象这是独一无二的 我正在将我的公司从subversion转换为GitGithub。我们内部有一个大约60gb的大型SVN存储库,我们将对其进行转换,我们的结构肯定不是标准的。我们的存储库如下所示: branches\ version_1.0 version_1.1 version_1.2 version_1.3 version_1.4 version_1.5 tags\ cust_a_test cu

我曾试图在某地和其他地方找到类似的情况,但都是空手而归,但我无法想象这是独一无二的

我正在将我的公司从subversion转换为GitGithub。我们内部有一个大约60gb的大型SVN存储库,我们将对其进行转换,我们的结构肯定不是标准的。我们的存储库如下所示:

branches\
  version_1.0
  version_1.1
  version_1.2
  version_1.3
  version_1.4
  version_1.5
tags\
  cust_a_test
  cust_a_prod
  cust_b_test
  cust_b_prod
  cust_c_test
  cust_c_prod
  cust_c_dev
  cust_d_test
  cust_d_prod
  cust_e_test
  cust_e_test_1.3
  cust_e_prod
  cust_f_test
  cust_f_prod
branches\
  master
  version_1.5_dev
  version_1.5_test
  version_1.5_prod
  version_1.4_dev
  version_1.4_test
  version_1.4_prod
  version_1.3_dev
  version_1.3_test
  version_1.3_prod
  version_1.2_dev
  version_1.2_test
  version_1.2_prod
  version_1.1_dev
  version_1.1_test
  version_1.1_prod
  version_1.0_dev
  version_1.0_test
  version_1.0_prod
  cust_a_prod
  cust_a_test
  cust_a_dev
  cust_b_prod
  cust_b_test
  cust_b_dev
  cust_c_prod
  cust_c_test
  cust_c_dev
  cust_d_prod
  cust_d_test
  cust_d_dev
  cust_e_prod
  cust_e_test
  cust_e_dev
我们的每个客户都可以访问Branchs\文件夹中的任何版本。但是,这些标记不是静态的,因此我们正在主动提交客户标记,以将它们与分支版本、修补程序、特定于客户的修改等同步。结构也不一致,因为一些客户只有一个test/prod标记,而另一些客户在测试时有dev/test/prod或特定于版本的标记。一团糟

我设想使用如下结构将我们转移到git:

branches\
  version_1.0
  version_1.1
  version_1.2
  version_1.3
  version_1.4
  version_1.5
tags\
  cust_a_test
  cust_a_prod
  cust_b_test
  cust_b_prod
  cust_c_test
  cust_c_prod
  cust_c_dev
  cust_d_test
  cust_d_prod
  cust_e_test
  cust_e_test_1.3
  cust_e_prod
  cust_f_test
  cust_f_prod
branches\
  master
  version_1.5_dev
  version_1.5_test
  version_1.5_prod
  version_1.4_dev
  version_1.4_test
  version_1.4_prod
  version_1.3_dev
  version_1.3_test
  version_1.3_prod
  version_1.2_dev
  version_1.2_test
  version_1.2_prod
  version_1.1_dev
  version_1.1_test
  version_1.1_prod
  version_1.0_dev
  version_1.0_test
  version_1.0_prod
  cust_a_prod
  cust_a_test
  cust_a_dev
  cust_b_prod
  cust_b_test
  cust_b_dev
  cust_c_prod
  cust_c_test
  cust_c_dev
  cust_d_prod
  cust_d_test
  cust_d_dev
  cust_e_prod
  cust_e_test
  cust_e_dev
我最初希望为每个版本/客户创建一个单独的存储库,我们在添加到最新版本时为支持的旧版本开发修复程序/添加程序,但在存储库之间合并更改有太多限制,因此分支似乎更适合

在将标记转换为分支并理想地保留每个分支/标记的历史记录的同时,是否可以将subversion存储库导入git


根据我们拥有的客户数量,手动创建分支机构是可能的,如果有点耗时的话,但这不包括历史记录。

我使用svn2git非常成功。您可以导出到多个repo,定义分支/标记/主干的自定义路径。samples目录有很多很好的例子。我确实发现了样本中未定义的特征。您可以定义前缀以前置到任何导出的路径

match /branches/bar/
  repository my_repo
  branch bar
  prefx foo
end match
最终结果I分支foo/bar在repo my_repo中创建

编辑:

由于该工具的灵活性,您可以轻松地将标记转换为分支

match /tags/cust_a_test/
  repository my_repo
  branch cust_a_test
end match
在初始git svn克隆之后,存储库需要大量的后处理。看到和