②将SVN迁移到GitLab-多分支多标签迁移

之前我们介绍了《①将SVN迁移到GitLab-单分支迁移》,文中研究了svn迁移到git单分支的操作过程,本文针对实际开发过程中svn使用到的trunk、branches、tags情况进行迁移,本文的svn代码情况如图所示:

 

具体的可以参考博文,《SVN的branches、trunk、tags使用》。

一、拷贝svn相关仓库代码到本地

svn co --username shaw001 --password shaw001 svn://192.168.109.130/  code

期间要输入svn账号密码确认,

 

成功之后,会生成一个code文件夹,里头也检出了相关分支代码记录。

二、生成用户列表,并配置相关svn和gitlab用户对应关系

svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /home/svn/users.txt 

红色字体标注路径文件可修改。

 

查看下相关的文件内容:

  

修改与gitlab的对应关系,修改后如下:

 

三、拷贝svn代码,并本地生成gitlab仓库

通过以下命令拷贝svn代码生成本地gitlab仓库:

git svn clone svn://192.168.109.130/ --authors-file=/home/svn/users.txt  --no-metadata  -s branches

  

  

四、配置远程仓库tags和branches相关配置

进入到branches文件夹里头,配置相关tag记录:

cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
rm -Rf .git/refs/remotes/origin/tags

这儿要注意下,有时候会提示没有.git/refs/remotes/origin/tags/*目录,这是就要自己去git目录里头查看具体是什么目录,有可能是.git/refs/remotes/tags/*路径 

配置相关分支记录

cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -Rf .git/refs/remotes

 

五、远程创建branches项目进行代码接收,并设置gitlab目标推送地址

登录gitlab创建一个branches项目

 设置推送地址:

git remote add origin git@192.168.109.130:shaw001/branches.git

六、配置gitlab全局用户变量

配置全局用户变量,另外还得配置sshKey密钥进行免密推送。

git config --global user.name shaw001
git config --global user.email shaw001@example.com

 

七、推送分支和标签到远程

推送分支到远程gitlab仓库

git push origin --all

 

 

 从记录可以看出,分支已经推送了。接下来推送标签到远程gitlab仓库

git push origin --tags

 

 到gitlab查看下相关记录。

 可以看到代码、分支、标签都已经同步到gitlab上了。我们看下提交记录:

 ok,SVN多分支、多标签迁移gitlab就介绍完了,下篇文章介绍如果svn继续开发,如何增量同步代码到gitlab上。 

完整流程脚本如下: 

1、拷贝svn相关仓库代码到本地
svn co --username shaw001 --password shaw001 svn://192.168.109.130/  code

2、生成用户列表,并配置相关svn和gitlab用户对应关系
svn log --xml | grep author | sort -u | perl -pe 's/.*>(.*?)<.*/$1 = /' > /home/svn/users.txt

shaw001@example.com
shaw002@example.com

3、拷贝svn代码,并本地生成gitlab仓库
git svn clone svn://192.168.109.130/ --authors-file=/home/svn/users.txt  --no-metadata  -s branches

4、配置远程仓库tags和branches相关配置
cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
rm -Rf .git/refs/remotes/origin/tags

cp -Rf .git/refs/remotes/* .git/refs/heads/
rm -Rf .git/refs/remotes

5、设置gitlab目标推送地址
git remote add origin git@192.168.109.130:shaw001/branches.git

6、配置gitlab全局用户变量
git config --global user.name shaw001
git config --global user.email shaw001@example.com

7、推送分支和标签到远程
git push origin --all
git push origin --tags

 参考:http://www.imooc.com/article/details/id/30301

posted @ 2019-12-16 11:05  shawWey  阅读(816)  评论(0编辑  收藏