将Subversion导入GIT:子路径问题

时间:2010-06-19 10:27:46

标签: svn git git-svn

我们目前运行一个大的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 个答案:

答案 0 :(得分:3)

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

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

更新:你可以包含多个--branches和--tags:

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实际上是为每个存储库支持一个项目而不是一个存储库中的多个项目。我想你会尝试使用它来解决很多问题。

答案 1 :(得分:0)

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