使用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的更多相关文章

  1. svn迁移到git仓库并保留commit历史记录

    svn迁移到git仓库并保留commit历史记录 最近在做svn迁移到gitlab,由于之前一直是由svn做版本控制.最简单的方式是将svn的内容export出来,然后添加到gitlab即可.但是,如 ...

  2. 使用subgit进行svn迁移至git(branch,tags)

    前言: 最近公司需要将整体项目从svn迁移至gitlab上,经过几天的研究,现记录一下流程 整体思路是进行一次导入: 先通过subgit将svn整个import至本地,在与git上的项目进行合并. 1 ...

  3. 将代码库从 SVN 迁移至 Git 并保留所有 commit 记录

    公司内部原本使用 SVN 进行版本控制,但随着 Github 的流行我个人的代码管理习惯逐渐转变.虽然公司项目并非开源,SVN 所具有的标准 trunk / branches / tags 结构完全够 ...

  4. git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?

    最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年. 因此导致虽然项目迁移过来了,但 ...

  5. SVN迁移到Gitlab实践经历

    svn 迁移至git操作手册 项目交付.版本管理工具变更等情况下,迁移svn旧历史记录有很大必要,方便后续追踪文件的提交历史,文件修改记录比对等.git自带了从svn迁移至git的工具命令,可很好的对 ...

  6. SVN迁移Gitlab步骤

    概述 公司要求将之前使用SVN进行管理的项目迁移到Gitlab进行项目管理,但是运维连不上我们这边的SVN服务器,于是我们就得自己将SVN项目迁移到Gitlab.Yeah!终于有我表现的机会了. 要求 ...

  7. 使用git svn clone迁移svn仓库

    使用git svn clone迁移svn仓库 clone命令可以指定很多参数,主要用到这些,你也可以使用git svn help查看完整的参数列表. git svn clone https://172 ...

  8. SVN迁移到Git的过程(+ 一些技巧)

    SVN迁移到Git的过程(+ 一些技巧) 李顺利 Key Words SVN,Git,Clone,Conversion,Tips,VCS,Pro Git 关于在VCS中SVN和Git之间的迁移(Clo ...

  9. SVN迁移到Git的过程(+ 一些技巧

    关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问.阅读本篇文 ...

随机推荐

  1. css 三(清除浮动专题)

    1.  三个关于浮动的概念  不浮动float:none; 清除周围的浮动元素   float:both   这是清除浮动的本意 清除子元素浮动对父元素的影响  clearfix    很多人都理解成 ...

  2. 【转载】C++ typedef用法小结

    http://www.cnblogs.com/charley_yang/archive/2010/12/15/1907384.html 第一.四个用途 用途一: 定义一种类型的别名,而不只是简单的宏替 ...

  3. 简单的WSGI server

    参考:https://ruslanspivak.com/lsbaws-part1/ 简单的WSGI server server程序 webserver.py # Tested with Python ...

  4. Linux下使进程在后台运行

    怎么样使程序在后台执行 ///////////////////  nohup  ./nn > nn.log  2 > &1  &   //////////// 方法有很多, ...

  5. Python函数式编程——map()、reduce()

    文章来源:http://www.pythoner.com/46.html 提起map和reduce想必大家并不陌生,Google公司2003年提出了一个名为MapReduce的编程模型[1],用于处理 ...

  6. 洛谷P3539 [POI2012] ROZ-Fibonacci Representation

    题目传送门 转载自:five20,转载请注明出处 本来看到这题,蒟蒻是真心没有把握的,还是five20大佬巨orz 首先由于斐波拉契数的前两项是1,1 ,所以易得对于任何整数必能写成多个斐波拉契数加减 ...

  7. 【BZOJ 3993】【SDOI 2015】序列统计

    http://www.lydsy.com/JudgeOnline/problem.php?id=3992 这道题好难啊. 第一眼谁都能看出来是个dp,设\(f(i,j)\)表示转移到第i位时前i位的乘 ...

  8. 【拓展Lucas】模板

    求\(C_n^m \mod p\),写得太丑了qwq. 第一次写拓展Lucas竟然是在胡策的时候qwq写了两个半小时啊_(:з」∠)还写挂了一个地方qwq 当然今天胡策我也是第一次写中国剩余定理(ˇˍ ...

  9. NOIP 2006 提高组 t1 能量项链

    题目描述 在Mars星球上,每个Mars人都随身佩带着一串能量项链.在项链上有N颗能量珠.能量珠是一颗有头标记与尾标记的珠子,这些标记对应着某个正整数.并且,对于相邻的两颗珠子,前一颗珠子的尾标记一定 ...

  10. 【分类讨论】【set】Codeforces Round #407 (Div. 2) B. Masha and geometric depression

    模拟一下那个过程,直到绝对值超过l,或者出现循环为止. 如果结束之后,绝对值是超过l的,就输出当前写在黑板上的数量. 如果出现循环,则如果写在黑板上的数量非零,则输出inf(注意!如果陷入的循环是一个 ...