之前我们介绍了《①将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

②将SVN迁移到GitLab-多分支多标签迁移的更多相关文章

  1. SVN迁移到Gitlab实践经历

    svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...

  2. github仓库迁移到gitlab以及gitlab仓库迁移到另一个gitlab服务器

    一. github仓库迁移到gitlab 先进入 new project: 选择 Import project, 选择下面的github: 进入后,这里需要github的 personal acces ...

  3. gogs迁移至gitlab

    一.先来聊一聊迁移的思路,不管是gogs迁移至gitlab,还是gitlab迁移至gogs,亦或gitlab迁移至gitlab,手动迁移的步骤都是如下图所示(在gitlab上新建一个空项目就会有这样的 ...

  4. svn恢复被删除的分支 svn del 分支

    笔者不小心,在操作时,删除了一个主开发分支(main_dev). 一. 悲剧的语句: svn del  -m"1.误删除分支"  http://svr_path/branches/ ...

  5. 如何从GitHub迁移到GitLab?

    如何从GitHub迁移到GitLab? 在本文中,我们将解释如何从Github迁移到Gitlab,同时我们也将解释如何将Github的开源项目导入到Gitlab. 正如你可能非常清楚的那样, Gitl ...

  6. Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag

    Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健 ...

  7. gitHub 迁移到gitlab上

    GitHub 迁移到 GitLab 上 第一步在github上生成 token 地址 https://blog.csdn.net/u014175572/article/details/55510825 ...

  8. 【linux】gitlab 的安装以及数据迁移

    一 .安装; 1  下载相应版本rpm包并安装 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ wget https://mirrors ...

  9. Git基本概念,流程,分支,标签及常用命令

    Git基本概念,流程,分支,标签及常用命令 Git一张图 Git基本概念 仓库(Repository) 分支(Branch) Git工作流程 Git分支管理(branch) 列出分支 删除分支 分支合 ...

随机推荐

  1. Java连接excel实现:通过姓名查找id和通过id查找姓名

    注意每个方法结束都要关闭workbook: 还有getIdbyname()方法中字符串flag与name的比较,一定要用equals()方法!!!: 剩下的不多解释,注释都在代码中: import j ...

  2. VUE中常用的十大过滤器

    在vue的学习过程中,我发现过滤器是一个很好用的工具,过滤器(Filters)来渲染数据是一种很有趣的方式.过滤器不能替代Vue中的methods.computed或者watch,不改变真正的data ...

  3. 软件工程第二次作业——Java学习路线

    我的第二次软工作业 过去我对自己所学和想学都很迷茫,以至于学得总是一知半解,但现在我想主攻Java方向,并坚定不移地走下去(之后拓展其他方面就是以后的事情了).之所以想主攻Java方向是因为Java本 ...

  4. windows 共享文件夹

    windows 共享文件夹 同步工作组 右键单击"计算机",选择"属性" 更改设置 单击"更改". 输入工作组 和 主机名 启计算机使更改生 ...

  5. 刷题记录:[CISCN 2019 初赛]Love Math

    目录 刷题记录:[CISCN 2019 初赛]Love Math 思路一 思路二 总结 刷题记录:[CISCN 2019 初赛]Love Math 题目复现链接:https://buuoj.cn/ch ...

  6. 原生js实现浏览器全屏和退出全屏

    全屏模式 //W3C if (docElm.requestFullscreen) { docElm.requestFullscreen(); } //FireFox else if (docElm.m ...

  7. 关于SpringCloud、SpringBoot简单讲解

     什么是Spring Boot 用我的话来理解,Spring Boot就是整合了框架的框架,它让一切依赖都变得有序简单,你不用操心A.jar是什么版本,又依赖哪些版本的jar,它默认配置了很多框架的使 ...

  8. 电商ERP系统——商品SKU与库存设计

    面试题经常问道,如何设计库存,哪些库存呢?分类属性的库存:不同颜色 不同尺码的属性的库存,这时候需要针对具体的SKU商品创建表. 总体思路 1.商品关联商品类别,商品类别关联多个商品属性,其中指定某几 ...

  9. 如何解决“HttpException (0x80004005): 超过了最大请求长度”问题

    .net mvc项目在做上传文件时,出现这个问题,上传文件的是通过表单提交,后台是通过请求里面获取文件信息的 1.问题截图: 堆栈信息 “/”应用程序中的服务器错误.超过了最大请求长度.说明: 执行当 ...

  10. Python高级笔记(十)闭包

    1. 闭包 #!/usr/bin/python # -*- encoding=utf- -*- def test(number): # 在函数里面再定义一个函数,并且这个函数用到外边函数的变量,那么将 ...