SVN迁移到gitlab的步骤和问题
工具使用svn2git ,gitlab官方推荐的工具,安装方法详细见官网。
迁移步骤分为4步:
- 确定svn路径及目录分布(branch,tags,trunk)目录。
- 执行迁出代码和转换为git工程(svn2git)
- 创建gitlab工程。
- 提交到git。
详细步骤
确定svn路径及目录分布
首先要确认待转换的SVN目录,比如svn://svn.com/web/product/sample
这个目录下面有branch,tags和trunk目录。
svn的标准目录是branches,tags,trunk三个目录,分别存放分支,版本和主干代码。
执行迁出代码和转换为git工程
svn2git主要api解释
1 | Usage: svn2git SVN_URL [options] |
authors.txt是映射svn用户和gitlab目录的情况。比如
1 | abc=abc<abc@gitlab.com> |
如果现有的目录结构不一致,需要在目录里面填写对应的目录映射。执行以下命令,根据svn工程的大小决定执行时间。
1 | svn2git svn://svn.com/web/product/sample --branches branch --tags tags --authors authors.txt -v |
可能出现的问题
- no associate commit message
这个是由于branch或者tag的路径映射问题,修改.git/config文件中的branches和tags的映射可解决。1
2
3
4
5branches = product/checkup/branch/*:refs/remotes/svn/*
tags = product/checkup/tags/*:refs/remotes/svn/tags/*
==>
branches = product/checkup/branch/*:refs/remotes/svn/branches/*
tags = product/checkup/tags/*:refs/remotes/svn/tags/*
创建gitlab工程
在gitlab 中创建对应的工程,获得指定的工程路径,推荐使用ssh通道提交。
使用ssh通道提交,需要提前配置ssh公钥,具体方法参考官方文档
提交到git
1 | git push --all |
然后gitlab页面查看时,能找到数量大于svn中的branch和tags即可。
完整shell流程
1 | svn2git svn://svn.com/web/product/sample --branches branch --tags tags --authors authors.txt -v |