使用git-svn迁移SVN至GitLab
使用git-svn迁移SVN至GitLab
1、安装git和git-svn
后面的步骤中对git版本有一定要求,通过yum安装的git版本较低,这里进行编译安装
[root@DevTest ~]# yum install curl-devel expat-devel gettext-devel openssl-devel zlib-devel -y
[root@DevTest ~]# wget -c https://www.kernel.org/pub/software/scm/git/git-2.9.5.tar.gz
[root@DevTest ~]# tar xf git-2.9.5.tar.gz
[root@DevTest ~]# cd git-2.9.5
[root@DevTest git-2.9.5]# ./configure --prefix=/usr/local/git
出现报错

解决方法为
[root@DevTest git-2.9.5]# yum install perl-ExtUtils-CBuilder perl-ExtUtils-MakeMaker -y
[root@DevTest git-2.9.5]# ./configure --prefix=/usr/local/git #再次编译
[root@DevTest git-2.9.5]# make && make install
将编译好的git的bin目录添加到bashrc中,相当于添加全局变量
[root@DevTest git]# vim /etc/profile
export GIT_HOME=/usr/local/git
export PATH=$GIT_HOME/bin:$PATH
[root@DevTest git]# git --version
git version 2.9.5
[root@DevTest git]# yum install git-svn -y #安装git-svn
2、建立SVN用户到git用户的映射文件
(可选)准备作者文件,以便将SVN作者映射到Git作者。如果您选择不创建authors文件,那么提交将不会归因于正确的GitLab用户。有些用户可能不认为这是一个大问题,而其他用户则希望确保他们完成此步骤。如果您选择映射作者,则需要映射SVN存储库中更改中存在的每个作者。如果不这样做,转换将失败,必须相应地更新作者文件。以下命令将搜索存储库并输出作者列表。
[root@DevTest ~]# svn log svn://192.168.1.20/hyhy --quiet | grep -E "r[0-9]+ \| .+ \|" | cut -d'|' -f2 | sed 's/ //g' | sort | uniq >/svnauthor/authors.txt
使用最后一条命令的输出来构建作者文件。创建一个名为的文件,authors.txt并为每行添加一个映射
vim /svnauthor/authors.txt
janedoe = Jane Doe <janedoe@example.com>
johndoe = John Doe <johndoe@example.com>
alexdoe = Alex Doe <alexdoe@example.com>
3、通过git svn clone克隆一个git版本库,SVN里面包含trunk,branches和tags
[root@DevTest ~]# mkdir /data
[root@DevTest ~]# cd /data
[root@DevTest data]# git svn clone svn://192.168.1.20/hyhy --no-metadata --authors-file /svnauthor/authors.txt hyhy
可选参数及含义
参数--no-metadata表示阻止git导出SVN包含的一些无用信息
参数--authors-file表示SVN账号映射到git账号文件,所有svn作者都要做映射
参数--trunkmobile表示主开发项目
参数--branches表示分支项目,--ignore-refs表示不包含后面的分支项目
参数hyhy表示git项目名称
4、通过git log 查看项目提交的历史记录,包括作者,日照,和提交注释信息等
[root@DevTest data]# cd hyhy
[root@DevTest hyhy]# git log
5、提交代码到gitlab仓库
[root@DevTest hyhy]# rm -rf .git/
[root@DevTest hyhy]# git init #初始化仓库(创建一个名为 .git 的子目录,这个子目录含有你初始化的 Git 仓库中所有的必须文件,这些文件是 Git 仓库的骨干)
[root@DevTest hyhy]# git remote add origin git@git.xxx.cn:java/hyhy.git #添加远程项目地址(可从项目主页复制)
[root@DevTest hyhy]# git add . #将修改保存到索引区
[root@DevTest hyhy]# git commit -m "commit code" #提交所有代码到本地版本库
[root@DevTest hyhy]# git push --all origin #将本地的更改提交到远程服务器
[root@DevTest hyhy]# git push origin –tags #推送标签
使用git-svn迁移SVN至GitLab的更多相关文章
- 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 迁移至 Git 并保留所有 commit 记录
公司内部原本使用 SVN 进行版本控制,但随着 Github 的流行我个人的代码管理习惯逐渐转变.虽然公司项目并非开源,SVN 所具有的标准 trunk / branches / tags 结构完全够 ...
- git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?
最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年. 因此导致虽然项目迁移过来了,但 ...
- SVN迁移到Gitlab实践经历
svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...
- SVN迁移Gitlab步骤
概述 公司要求将之前使用SVN进行管理的项目迁移到Gitlab进行项目管理,但是运维连不上我们这边的SVN服务器,于是我们就得自己将SVN项目迁移到Gitlab.Yeah!终于有我表现的机会了. 要求 ...
- 使用git svn clone迁移svn仓库
使用git svn clone迁移svn仓库 clone命令可以指定很多参数,主要用到这些,你也可以使用git svn help查看完整的参数列表. git svn clone https://172 ...
- SVN迁移到Git的过程(+ 一些技巧)
SVN迁移到Git的过程(+ 一些技巧) 李顺利 Key Words SVN,Git,Clone,Conversion,Tips,VCS,Pro Git 关于在VCS中SVN和Git之间的迁移(Clo ...
- SVN迁移到Git的过程(+ 一些技巧
关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问.阅读本篇文 ...
随机推荐
- 急!急!急!请问win32api参数乱码如何解决!
我想做一个QQ自动登陆,使用的QQ是2009.现在先模拟打开QQ,然后通过api调用回调函数.回调函数为一个委托方法,但是在方法中整个参数乱码,请问如何解决? 具体流程为,启动QQ,获取当前启动QQ的 ...
- 插入排序(InsertionSort)
算法描述 插入排序是在一个已经有序的数据序列,要求在这个已经排好的数据序列中插入一个数,但要求插入后此数据序列仍然有序.插入排序是一种稳定的排序. 基本思想 插入排序是在一个已经有序的小序列的基础上, ...
- pytho中pickle、json模块
pickle & json 模块 json,用于字符串 和 python数据类型间进行转换 pickle,用于python特有的类型 和 python的数据类型间进行转换 json模块提供了四 ...
- #、##和__VA_ARGS__
转自:http://www.cnblogs.com/zhujudah/admin/EditPosts.aspx?opt=1 1.#假如希望在字符串中包含宏参数,ANSI C允许这样作,在类函数宏的替换 ...
- Flask实战第67天:Flask+Celery实现邮件和短信异步发送
之前在项目中我们发送邮件和 短信都是阻塞的,现在我们来利用Celery来优化它们 官方使用文档: http://flask.pocoo.org/docs/1.0/patterns/celery/ re ...
- BZOJ 2342 [Shoi2011]双倍回文(manacher+并查集)
[题目链接] http://www.lydsy.com/JudgeOnline/problem.php?id=2342 [题目大意] 记Wr为W串的倒置,求最长的形如WWrWWr的串的长度. [题解] ...
- Objective-c nil, Nil, NULL和NSNull的区别
在OC中可能经常会遇到 nil,Nil,NULL和NSNull,下面分析一下之间的区别: Symbol Value Meaning NULL (void *)0 literal null value ...
- Problem D: 结构体:计算输入日期是该年的第几天
#include <stdio.h> struct time{ int year; int month; int day;}; int main(void) { struct time s ...
- 你一定喜欢看的 Webpack 2.× 入门实战(转载)
最近在学习 Webpack,网上大多数入门教程都是基于 Webpack 1.x 版本的,我学习 Webpack 的时候是看了 zhangwang 的 <<入门 Webpack,看这篇就够了 ...
- [转]Spring MVC 4常用的那些注解
Spring从2.5版本开始在编程中引入注解,用户可以使用@RequestMapping, @RequestParam, @ModelAttribute等等这样类似的注解.到目前为止,Spring的版 ...