在更改存储库结构时从SVN移动到Git

时间:2014-08-14 04:51:16

标签: git svn version-control git-svn bitbucket

我正在从SVN(cloudforge)迁移到Git(bitbucket)。我希望在迁移期间使用git-svn将SVN与Git单向同步 - 如Atlassian's migration tutorial所述。

我们的单个SVN仓库已用于跟踪多个项目,其中所有项目都处于相同的发布计划中。我们SVN存储库的最终结构与我能够找到的任何示例不同:

/project_A  <- trunk
/project_B  <- trunk
/project_C  <- trunk
/branches/2013-12-20/project_A_2013-12-20
/branches/2013-12-20/project_B_2013-12-20
/branches/2013-12-20/project_C_2013-12-20
/branches/2014-03-19/project_A_2014-03-19
/branches/2014-03-19/project_B_2014-03-19
/branches/2014-03-19/project_C_2014-03-19

当我们转移到Git时,我希望每个项目都在其自己的Git存储库中,因为每个项目都非常大,并且彼此完全无关(除了相同的分支/发布时间表)。我也想采用Gitflow Workflow,它会给我一个像以下结构:

project_A存储库:

/master
/develop
/release/2014-03-19

(对于project_ [B,C] Git存储库也是如此。

是否可以使用 git svn clone ,因为我希望存储库结构如此彻底地改变?如果没有,在保持修订历史的同时,移动到我的新Git存储库的最佳行动是什么?

1 个答案:

答案 0 :(得分:0)

我至少看到两种不同的方式

  • 在转换为Git之前拆分存储库
    • 创建整个存储库(svnadmin dump
    • 的完整转储
    • 使用svndumpfilter include --pattern ...(SVN 1.7 +)
    • 过滤此转储以进行单项目布局
    • 将转储加载到单独的存储库并转换而无需其他技巧(-s git svn clone选项将完成所有操作)
  • 愚蠢的克隆,使用&#39; init&#39; fetch&#39;对和之前获取,在.git/config部分的[svn-remote]部分内为需要的分支准备正确的fetch-references规范:它可以是通配符,枚举或只是所有分支的集合(参见Git-SVN page)上的样本