• ②将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

  • 相关阅读:
    MySql状态查看方法 MySql如何查看连接数和状态?
    MySQL连接数超过限制的解决方法
    JS正则表达式获取分组内容实例
    jquery data方法获取某个元素上事件
    javascript浮点数转换成整数三种方法
    ThinkPHP CURD方法中field方法详解
    python3.3使用tkinter实现猜数字游戏代码
    Expo大作战(二十四)--expo sdk api之Accelerometer
    Expo大作战(二十三)--expo中expo kit 高级属性(没干货)
    Expo大作战(二十二)--expo分离后的部署(expokit)
  • 原文地址:https://www.cnblogs.com/shawWey/p/12048039.html
Copyright © 2020-2023  润新知