如何将具有自定义结构的SVN存储库迁移到Git?

时间:2018-05-15 11:03:55

标签: git-svn

我在SVN中有一个多模块遗留项目,其中单独的模块被单独发布和标记,从而产生以下结构:

trunk/
  project/
    moduleX/
    moduleY/
    moduleZ/
tags/
  moduleX-1.0/
  moduleX-1.1/
  moduleY-0.1/
  moduleZ-2.0/

看起来标签是使用svn copy trunk/project/moduleX/ tags/moduleX-1.0/等创建的,而不是svn copy trunk/project/ tags/moduleX-1.0

是否可以将此类项目作为单个存储库迁移到Git,保留历史记录并创建适当的标记?

1 个答案:

答案 0 :(得分:0)

您需要手动配置git-svn。

  1. 创建空存储库:git init moduleX ; git init moduleY ; git init moduleZ
  2. 编辑每个gitconfig并添加git-svn部分,如:
  3. MODULEX /的.git /配置:

    [svn-remote "svn"]
        url = svn://your-server/svn-repo
        fetch = trunk/project/moduleX:refs/remotes/svn/trunk
        tags = tags/moduleX-*:refs/remotes/svn/tags/*
    

    moduleY /的.git /配置:

    [svn-remote "svn"]
        url = svn://your-server/svn-repo
        fetch = trunk/project/moduleY:refs/remotes/svn/trunk
        tags = tags/moduleY-*:refs/remotes/svn/tags/*
    

    moduleZ /的.git /配置:

    [svn-remote "svn"]
        url = svn://your-server/svn-repo
        fetch = trunk/project/moduleZ:refs/remotes/svn/trunk
        tags = tags/moduleZ-*:refs/remotes/svn/tags/*
    
      每个副本中都有
    1. git svn fetch