②将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
②将SVN迁移到GitLab-多分支多标签迁移的更多相关文章
- SVN迁移到Gitlab实践经历
svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...
- github仓库迁移到gitlab以及gitlab仓库迁移到另一个gitlab服务器
一. github仓库迁移到gitlab 先进入 new project: 选择 Import project, 选择下面的github: 进入后,这里需要github的 personal acces ...
- gogs迁移至gitlab
一.先来聊一聊迁移的思路,不管是gogs迁移至gitlab,还是gitlab迁移至gogs,亦或gitlab迁移至gitlab,手动迁移的步骤都是如下图所示(在gitlab上新建一个空项目就会有这样的 ...
- svn恢复被删除的分支 svn del 分支
笔者不小心,在操作时,删除了一个主开发分支(main_dev). 一. 悲剧的语句: svn del -m"1.误删除分支" http://svr_path/branches/ ...
- 如何从GitHub迁移到GitLab?
如何从GitHub迁移到GitLab? 在本文中,我们将解释如何从Github迁移到Gitlab,同时我们也将解释如何将Github的开源项目导入到Gitlab. 正如你可能非常清楚的那样, Gitl ...
- Jenkins 配合 GitLab 实现分支的自动合并、自动创建 Tag
Jenkins 配合 GitLab 实现分支的自动合并.自动创建 Tag 背景 GitFlow工作流简介 Gitflow工作流定义了一个围绕项目发布的严格分支模型,它会相对复杂一点,但提供了用于一个健 ...
- gitHub 迁移到gitlab上
GitHub 迁移到 GitLab 上 第一步在github上生成 token 地址 https://blog.csdn.net/u014175572/article/details/55510825 ...
- 【linux】gitlab 的安装以及数据迁移
一 .安装; 1 下载相应版本rpm包并安装 https://mirrors.tuna.tsinghua.edu.cn/gitlab-ce/yum/el7/ wget https://mirrors ...
- Git基本概念,流程,分支,标签及常用命令
Git基本概念,流程,分支,标签及常用命令 Git一张图 Git基本概念 仓库(Repository) 分支(Branch) Git工作流程 Git分支管理(branch) 列出分支 删除分支 分支合 ...
随机推荐
- Alapha冲刺(3/6)
队名:無駄無駄 组长博客 作业博客 组员情况 张越洋 过去两天完成了哪些任务 摸鱼 提交记录(全组共用) 接下来的计划 沟通前后端成员,监督.提醒他们尽快完成各自的进度 学习如何评估代码质量 准备Al ...
- Spring Boot 配置文件 bootstrap vs application 到底有什么区别?
用过 Spring Boot 的都知道在 Spring Boot 中有以下两种配置文件 bootstrap (.yml 或者 .properties) application (.yml 或者 .pr ...
- Linux安装问题解决
首先安装VM,之后下载centos7.5 安装好vm后运行时无法执行操作 提示 已将该虚拟机配置为使用 64 位客户机操作系统.但是,无法执行 64 位操作. 此主机支持 Intel VT-x,但 I ...
- C# System.Net.Mail.MailMessage 发邮件
C# System.Net.Mail.MailMessage 发邮件 上篇文化在哪个可以看到使用 System.Web.Mail.MailMessage 发邮件时会提示 ,提供用于构造电子邮件的属性和 ...
- java 异步操作
/** * 异步删除 * * @param keys */ public void asycExecute(String keys) { ExecutorService executor = Exec ...
- LC 968. Binary Tree Cameras
Given a binary tree, we install cameras on the nodes of the tree. Each camera at a node can monitor ...
- 运行 puppeteer 报错 chrome: error while loading shared libraries: libpangocairo-1.0.so.0: cannot open shared object file: No such file or directory
运行 puppeteer 报错 chrome: error while loading shared libraries: libpangocairo-1.0.so.0: cannot open sh ...
- 【SpringBoot】SpringBoot快速入门(一)
SpringBoot介绍 Spring Boot使创建可运行的独立,生产级基于Spring的应用程序变得容易.对Spring平台和第三方库整合,这样就可以以最小的麻烦开始使用.大多数Spring Bo ...
- laravel 解决 Please provide a valid cache path 问题
这是因为laravel的缓存路径没有找到 laravel缓存文件路径是在 config/cache.php中设置,默认存在storage文件夹中 解决: 创建目录: mkdir -p storage/ ...
- Laya的滚动容器
想实现一个简单的滚动容器.例如水平排列10个图标,可以左右滑动查看的. Egret里有布局容器可以滚动 Laya看了教程和示例,没有找到一个滚动容器,只有一个list,需要设置item,显然不是我想要 ...