将存储库从SVN迁移到GITLAB时出现问题

时间:2018-11-15 16:27:59

标签: git svn gitlab git-svn

我在SVN中有一个很大的存储库,其结构如下:

http://mycompany.com/svn/something/
│   
│  
│
└───branches
│   │   
│   └───MyProject_FIX
│   │   │   
│   │   └(SOURCE CODE)   
│   │   
│   └───MyProject_Branch2
│   │   │   
│   │   └(SOURCE CODE) 
│   │
│   │
│   │
│   └───OtherProject_FIX
│       │   
│       └(SOURCE CODE)   
│
│
│
└───tags
│   │   
│   └───MyProject
│   │   │   
│   │   └1.0.0
|   |   |  └(SOURCE CODE)
│   │   │
|   │   └1.0.1
|   │   |  └(SOURCE CODE)
│   │   │
|   │   └1.0.3    
|   │   |  └(SOURCE CODE)
│   │   │
|   │   (...)
│   │   │
│   │   └latest
│   │
│   └───OtherProject   
│
└───trunk
    |
    └───MyProject
    |    |
    |    └─(SOURCE CODE)
    |
    └───OtherProject
         |
         └─(SOURCE CODE)   

我几乎尝试了所有事情:

我唯一实现的想法是使用提交导入SVN存储库的相同结构。

我想做的是转换标签文件夹介绍真实git标签,分支文件夹介绍真实分支,并仅导入MyProject(忽略OtherProject)

最后我不得不说存储库很大(我不知道这个细节是否重要)

是否有任何直接的方法可以转换此存储库?

先谢谢您!

1 个答案:

答案 0 :(得分:2)

听起来像您需要对git svn使用trunk / anches / tags命令行选项:

git svn clone --trunk=/trunk/MyProject --branches=/branches/MyProject_Branch2 --branches=/branches/MyProject_FIX --tags=/tags/MyProject http://mycompany.com/svn/something/ <dest repo>

这应该只提取MyProject。

请记住包括您的作者文件并放入--prefix==中,以确保将svn标签转换为真实标签的atlassian清理脚本正常工作。