②将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) 列出分支 删除分支 分支合 ...
随机推荐
- 「2019-8-11提高模拟赛」女装盛宴 (flag)
传送门 Solution 基环树+倍增+双指针 第一次因为#define int long long而玄学RE 为什么标程都不用开\(long long\)啊 Code /*玄学RE 看来defi ...
- 使用docker 基于centos7制作mysql镜像
说明:由于业务需要使用centos7.6+mysql5.7+jdk8以及其他的java程序,本想在网上找一个现成的,发现镜像都不适合我. 一.yum方式安装mysql 1.编写dockerfile文件 ...
- [内网渗透]HASH获取与HASH传递
0x01 PTH简介 PTH,即Pass-The-Hash,首先我们来说下为什么要使用HASH传递,一是在目标机>=win server 2012时,lsass.exe进程中是抓不到明文密码的, ...
- Linux 权限规划ACL
什么是ACL ACL是Access Control List的缩写,主要目的是提供传统的owner.group.others的read.write.execute权限之外的具体权限设置 ACL可以针对 ...
- 刷题记录:[XNUCA2019Qualifier]EasyPHP
目录 刷题记录:[XNUCA2019Qualifier]EasyPHP 解法一 1.error_log结合log_errors自定义错误日志 2.include_path设置包含路径 3.php_va ...
- 启动服务器 SEVERE: Error configuring application listener of class org.springframework.web.context.ContextLoaderListener
意思是spring.jar这个包在发布的时候没有被放入war.如果是maven管理的项目,可以看看这个项目的部署参数里有没有加入所有maven的包. 右键项目->Properties->D ...
- 再谈CAP
CAP定理设计者Eric Brewer作为Google基础设施副总裁在时隔二十年后重谈CAP定律. Eric Brewer目前正在推动Kubernetes和容器建设,在这篇采访中:Google sys ...
- 单点登录(SSO)工作原理
单点登录(SSO)工作原理 一.单点登录的介绍 单点登录(Single Sign On),简称为 SSO,是目前比较流行的企业业务整合的解决方案之一.SSO的定义是在多个应用系统中,用户只需要登录一次 ...
- pytorch ImageFolder的覆写
在为数据分类训练分类器的时候,比如猫狗分类时,我们经常会使用pytorch的ImageFolder: CLASS torchvision.datasets.ImageFolder(root, tran ...
- mongo 笔记
mongodb://[username:password@]host1[:port1][,host2[:port2],...[,hostN[:portN]]][/[database][?options ...