代码之家  ›  专栏  ›  技术社区  ›  Andomar

将Subversion导入GIT:子路径问题

  •  6
  • Andomar  · 技术社区  · 16 年前

    我们目前运行一个大型subversion存储库,我正试图将其转移到GIT。问题是它使用根目录下的主干和标记。例如:

    MyDepartment\MyOS\Project1\trunk\              <-- master branch
    MyDepartment\MyOS\Project1\branch\v1           <-- other branch
    MyDepartment\MyOS\Project1\tags\v1_20100101    <-- release tag
    

    有不同的部门、操作系统和许多不同的项目。

    因此,当我使用--stdlayout克隆SVN存储库时:

    git svn clone --stdlayout http://svn-repository/
    

    克隆最终是空的。如果没有这个选项,我会得到一个克隆,但是分支会被视为主分支上的目录。

    1. 有没有办法一次性导入这个目录结构?
    2. 如果我编写一个脚本来分别导入所有项目,有没有办法将每个项目的GIT导入合并到一个大的GIT存储库中?
    2 回复  |  直到 16 年前
        1
  •  3
  •   silk    16 年前

    如果我正确理解了这个问题,你想要:

    git svn clone 
        --trunk=MyDepartment\MyOS\Project1\trunk 
        --tags=MyDepartment\MyOS\Project1\tags 
        --branches=MyDepartment\MyOS\Project1\branch 
        http://svn-repository/
    

    更新:可以包含多个--分支和--标记:

    git svn clone 
        --trunk=MyDepartment\MyOS\Project1\trunk 
        --tags=MyDepartment\MyOS\Project1\tags 
        --tags=MyDepartment\MyOS\Project2\tags 
        --tags=OtherDepatment\MyOS\Project1\tags 
        --branches=MyDepartment\MyOS\Project1\branch 
        --branches=MyDepartment\MyOS\Project2\branch 
        --branches=OtherDepartment\MyOS\Project1\branch 
        http://svn-repository/
    

    显然,你不能再有一只箱子了。

    Git的真正设计目的是支持每个存储库一个项目,而不是在一个repo中支持多个项目。我想你这样使用它会遇到很多问题。

        2
  •  0
  •   Brian Clapper    16 年前

    调查 Git submodules 。您可能需要分别导入每个子项目,但结果可能会更好地反映您当前的使用情况。