2010-06-19 38 views
6

我们目前运行一个大的Subversion版本库,我试图将它移动到GIT。问题是它在根目录下使用中继和标签。例如:导入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存储库中?
+1

'--stdlayout'假定'trunk','tags','branch' **'es' **。 – jfs 2010-06-19 14:17:36

回答

0

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

+0

不幸的是,我读过的这本书(“使用Git进行版本控制”)阻止了使用子模块的方式相当有说服力 – Andomar 2010-06-19 16:56:02

3

如果我正确understande的问题,你想:

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确实被设计为支持每个存储库一个项目,而不是一个存储库中的多个项目。我想你会遇到很多问题,试图使用它。

+0

有许多不同的项目。我可以为每个项目编写导入脚本,但我怎样才能将它们合并到一个git存储库中? – Andomar 2010-06-20 16:07:04

+0

关于多个分支和标签参数的小更新。这有帮助吗?或者你想git自动猜测你的仓库的复杂结构?我相信这是不可能的。 – silk 2010-06-21 09:32:36

+0

是否有可能将多个git存储库合并为一个? – Andomar 2010-06-21 20:29:44