SVN迁移到Gitlab实践经历
svn 迁移至git操作手册
项目交付、版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等。git自带了从svn迁移至git的工具命令,可很好的对svn上的提交历史做迁移和映射,操作简单方便。但是初次接触不熟练,这里做一个总结和记录,内容尽量简单化。争取提供给刚刚接触git和准备迁移的用户一个简单易懂的方案。
旧svn服务器:192.168.1.185(对生产的敬畏)
新svn+git服务器:192.168.1.203
我是把旧的svn通过dump下来传到203的svn上面这需要点时间,这个原理跟mysql的dump一样
把SVN上的代码仓库迁移到Gitlab上,实际上就是把SVN仓库转变成Git仓库,并且希望能保留原SVN仓库的Commit等历史记录,这一点很重要。
SVN迁移到Gitlab需要安装git-svn
yum install -y git-svn
建立users.txt(存储svn账号与gitlab上账号的关联性)
svn log svn://192.168.1.203 -q | awk -F '|' '/^r/ {sub("^ ", "", $2); sub(" $", "", $2); print $2" = "$2" <"$2">"}' | sort -u > ./users.txt
得到的结果:

然后开始把SVN仓库转变成Git仓库,执行以下命令:
git svn clone svn://192.168.1.203/XinglvTmc/ --no-metadata --authors-file=users.txt --trunk=trunk --tags=tags --branches=branch XinglvTmc
添加GitLab到Git源信息
git remote add origin URL
注:目的地gitlab仓库地址
5. 将trunk, branches等上传
git push origin --all
为了将标签变为合适的 Git 标签,运行
# cd my_project
# cp -Rf .git/refs/remotes/origin/tags/* .git/refs/tags/
# rm -Rf .git/refs/remotes/origin/tags
这会使原来在 remotes/origin/tags/ 里的远程分支引用变成真正的(轻量)标签。
接下来,将 refs/remotes 下剩余的引用移动为本地分支:
# cp -Rf .git/refs/remotes/* .git/refs/heads/
# rm -Rf .git/refs/remotes
git remote add origin http://192.168.1.203/root/xinglvtmc.git/
git fatal: 远程 origin 已经存在。
不小心将git远程地址配错了,再次配置提示以下错误:
fatal: 远程 origin 已经存在。
此时只需要将远程配置删除,重新添加即可;
git remote rm origin
git remote add origin https://github.com/***/WebCrawlers.git
再次提交文件即可正常使用
粗心造成的小错误,顺便说一下,如果git没有commit就执行push操作会出现以下错误
fatal: unable to access 'https://github.com/***/WebCrawlers.git/': Empty reply from server
解决:只需要先commit 在 push即可
gitlab删除已上传项目中的文件夹

SVN迁移到Gitlab实践经历的更多相关文章
- SVN迁移到GitLab,保留提交记录
1.下载GitBash 此工具自带git svn命令,无需再下载git-svn工具 2.GitBash终端中输入以下命令 git svn clone svnurl srcPath 3.push本地仓库 ...
- svn迁移到git仓库并保留commit历史记录
svn迁移到git仓库并保留commit历史记录 最近在做svn迁移到gitlab,由于之前一直是由svn做版本控制.最简单的方式是将svn的内容export出来,然后添加到gitlab即可.但是,如 ...
- 使用subgit进行svn迁移至git(branch,tags)
前言: 最近公司需要将整体项目从svn迁移至gitlab上,经过几天的研究,现记录一下流程 整体思路是进行一次导入: 先通过subgit将svn整个import至本地,在与git上的项目进行合并. 1 ...
- SVN迁移Gitlab步骤
概述 公司要求将之前使用SVN进行管理的项目迁移到Gitlab进行项目管理,但是运维连不上我们这边的SVN服务器,于是我们就得自己将SVN项目迁移到Gitlab.Yeah!终于有我表现的机会了. 要求 ...
- 将代码库从 SVN 迁移至 Git 并保留所有 commit 记录
公司内部原本使用 SVN 进行版本控制,但随着 Github 的流行我个人的代码管理习惯逐渐转变.虽然公司项目并非开源,SVN 所具有的标准 trunk / branches / tags 结构完全够 ...
- git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?
最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年. 因此导致虽然项目迁移过来了,但 ...
- ②将SVN迁移到GitLab-多分支多标签迁移
之前我们介绍了<①将SVN迁移到GitLab-单分支迁移>,文中研究了svn迁移到git单分支的操作过程,本文针对实际开发过程中svn使用到的trunk.branches.tags情况进行 ...
- ①将SVN迁移到GitLab-单分支迁移
将SVN上的代码迁移到GitLab上,实际原理是将所迁移的服务器上,拷贝SVN上的相关代码,在服务器上生成Git相关仓库,然后推送到GitLab仓库,并保存SVN相关的提交记录,分支,标签等信息. 一 ...
- 前端小微团队的Gitlab实践
疫情期间我感觉整个人懒散了不少,慢慢有意识要振作起来了,恢复到正常的节奏.最近团队代码库从Gerrit迁移到了Gitlab,为了让前端团队日常开发工作有条不紊,高效运转,开发历史可追溯,我也查阅和学习 ...
随机推荐
- mysql数据库单独移动位置
在新版本中.sym方式已不再支持,最新的方式是使用软链接方式(Windows),官方文档:https://dev.mysql.com/doc/refman/5.7/en/windows-symboli ...
- 使用RESTful风格开发
什么是RESTful风格? REST是REpresentational State Transfer的缩写(一般中文翻译为表述性状态转移),REST 是一种体系结构,而 HTTP 是一种包含了 RES ...
- Java-JUC(零):Java:现有线程T1/T2/T3,如何确保T1执行完成之后执行T2,T3在T2执行完成之后执行。
要实现多个线程执行完成先后,就要知道如何实现线程之间的等待,java线程等待实现是join.java的jdk中join方法实现如下: public final synchronized void jo ...
- 判断 js 类型的方式
1. typeof 可以判断出'string','number','boolean','undefined','symbol'但判断 typeof(null) 时值为 'object'; 判断数组和对 ...
- java spark list 转为 RDD 转为 dataset 写入表中
package com.example.demo; import java.util.ArrayList; import java.util.Arrays; import java.util.Hash ...
- wmi 远程访问问题解决
WMI远程访问问题解决方法 WMI 全称为:Microsoft Windows Management Instrumentation (WMI) 按微软的介绍大致如下: WMI 是 Mic ...
- PHP无限级树形结构算法(递归和引用)
测试数组 $array = [ [, , 'name' => '这是主类'], [, , 'name' => '这是主类'], [, , 'name' => '父级为1子类'], [ ...
- ASP生成JSON数据
原文地址为:ASP生成JSON数据 < %@LANGUAGE = " VBSCRIPT " CODEPAGE = " 65001 " % > ...
- 使用Lock对象实现同步效果
Lock是一个接口,为了使用一个Lock对象,需要用到 Lock lock = new ReentrantLock(); 与 synchronized (someObject) 类似的,loc ...
- hive-1.1.0-cdh5.11.1-src compile
1. download cdh hive src http://archive.cloudera.com/cdh5/cdh/5/hive-1.1.0-cdh5.11.1-src.tar.gz 2. ...