SVN迁移到gitlab的步骤和问题
Posted 可乐小数据
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了SVN迁移到gitlab的步骤和问题相关的知识,希望对你有一定的参考价值。
工具使用svn2git ,gitlab官方推荐的工具,安装方法详细见官网。或者手动使用git svn命令操作。比较来说,svn2git更傻瓜,更简单。
迁移步骤分为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解释
Usage: svn2git SVN_URL [options]
Specific options:
--trunk TRUNK_PATH 重新指定trunk目录路径 (default: trunk)
--branches BRANCHES_PATH 重新指定braches目录,在本文中需指向branch目录
--tags TAGS_PATH 重新指定tags目录,在本文中需指向tags目录
--authors AUTHORS_FILE 帐号映射文件
--exclude REGEX 排除目录
-v, --verbose 过程日志限制
-h, --help Show this message
authors.txt是映射svn用户和gitlab目录的情况。比如
abc=abc<abc@gitlab.com>
如果现有的目录结构不一致,需要在目录里面填写对应的目录映射。执行以下命令,根据svn工程的大小决定执行时间。
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的映射可解决。
branches = 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
git push --all
git push --tags
然后gitlab页面查看时,能找到数量大于svn中的branch和tags即可。
{% asset_img gitlab-branches-tags.png %}
完整shell流程
svn2git svn://svn.com/web/product/sample --branches branch --tags tags --authors authors.txt -v
git remote add origin git@gitlab.com:sample/sample.git
git push --all
git push --tags
以上是关于SVN迁移到gitlab的步骤和问题的主要内容,如果未能解决你的问题,请参考以下文章