之前我们介绍了《①将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. Pycharm使用git版本控制

    一.使用Pycharm进行版本控制 01 从远程仓库克隆项目 从远程仓库将一个已存在的项目克隆到本地 打开pycharm, VCS --> Checkout from Version Contr ...

  2. Docker部署web项目-war包

    一.部署springmvc(war包)项目 1.手工方式 ①搜索tomcat镜像 docker search tomcat ②拉取tomcat基础镜像至本地仓库 docker pull tomcat ...

  3. TCP的连接如何知道对方已经异常断开

    断电的话,对方不会发送任何数据包过来,包括RST.主机无法得知.如果是TCP已经连接,有个定时器,会发送空包,sequence number不变.如果一直收不到ack,会断定对方已经无法通信,而释放系 ...

  4. mysql查询、子查询、连接查询

    mysql查询.子查询.连接查询 一.mysql查询的五种子句 where子句(条件查询):按照“条件表达式”指定的条件进行查询. group by子句(分组):按照“属性名”指定的字段进行分组.gr ...

  5. Web.Config配置文件中customErrors元素的使用方法

    在Web.Config配置文件中,customErrors元素提供有关ASP.NET 应用程序自定义错误消息的信息. 先看一下配置结构的示例: <configuration>   < ...

  6. matlab学习笔记8 基本绘图命令-图形窗口简介

    一起来学matlab-matlab学习笔记8 基本绘图命令_1 图形窗口简介 觉得有用的话,欢迎一起讨论相互学习~Follow Me 参考书籍 <matlab 程序设计与综合应用>张德丰等 ...

  7. pytorch中调用C进行扩展

    pytorch中调用C进行扩展,使得某些功能在CPU上运行更快: 第一步:编写头文件 /* src/my_lib.h */ int my_lib_add_forward(THFloatTensor * ...

  8. rpm和deb包制作和升级执行步骤

    deb安装包升级和安装都是dpkg -i .deb命令,升级时直接覆盖安装新包安装步骤:1 preinst install2 postinst configure升级步骤:1 先执行旧包prerm u ...

  9. prettier

     prettier,是一个自以为是 Opinionated 的代码格式化工具,用来批量处理旧代码的统一. 涉及引号,分号,换行,缩进. prettier 支持我们大前端目前大部分语言处理,包括 Jav ...

  10. [简短问答]C-Lodop中一些测试用的地址

    测试访问:访问http://localhost:8000欢迎页面试试进入欢迎页面http://localhost:8000,点欢迎页面的预览试试 查看下c-lodop启动界面,在设置里查看下当前启动的 ...