如何让公司从SVN改到Git?
把公司的SVN迁移到GitLab CE(GitLab社区版)原因主要有下面几个:
- 年青的新人进来,喜欢用git的越来越多
- GitLab CE提供了优美的 web 界面,图形化分支结构,更直观的代码审查,统计、issue 系统、wiki 等功能全面集成
- Git 比SVN commit和push更快,Git库就在本地,commit是本地提交,回家照样干活。push的时候是push一个压缩的文件,而不是一个个文件的push.
- Git数据库是分布式的,每个用户都有一个本地库,数据更安全。
- 因为是本地commit,Git即使在公网环境下,也可以顺畅使用,如果要跨地域跨国(分公司在美国)做开发,可以方便国外公司人员快速访问,共用同一个版本管理软件。
基于以上几点,我们决定把当前正在使用的SVN库迁移到GitLab CE上。一、服务器系统配置如下:DELL PowerEdge R630 CPU 20core MEM 400G Disk 300G *8 RAID 10系统 :Ubuntu 16.04.1 LTS
二、GitLab CE 的安装方法如下:
安装非常简单,可以直接用官方文档安装并启动。建议把/opt/gitlab(程序配置) /var/log/gitlab(日志) /var/opt(数据) 目录放到独立的大的分区上去,并定时备份。
GitLab CE 在ubuntu16.04上安装官方文档
apt-get update
apt-get install curl openssh-server ca-certificates postfix
curl -sS https://packages.gitlab.com/install/repositories/gitlab/gitlab-ce/script.deb.sh | sudo bash
apt-get install gitlab-ce
gitlab-ctl reconfigure
三、迁移SVN库到GitLab CE
1、安装迁移工具git-svn
apt-get install git-svn
2、生成SVN用户文件,格式如下:
可以把SVN库中的用户cp出来,在最后加一列邮件地址
root@DEV70:/data/git# cat auth.txt
vr = xxxxx 《guanjianming@xxx.com.cn》 #请自己把《》换成半角 :)
vr_view = xxxx 《liuchenxin@xxx.com.cn》
vr_01 = xxxxx 《zhangrongwang@xxx.com.cn》
vr_02 = xxxxx 《getaiming@xxx.com.cn》
vr_red = xxxx 《alex@xxx.com>》
3、使用git svn clone命令把SVN库转换为本地git库
###在服务器上,把一个远程SVN库转为一个git本地库
git svn clone –username vr -s -A auth.txt svn://172.18.194.181:9999/vr_new/ vr/
#-s 同 –stdlayout 参数表示你的项目在 SVN 中是常见的 “trunk/branches/tags” 目录结构,如果不是,那你需要使用 –tags, –branches, –trunk 参数
#-A –authors-file auth.txt 上面的SVN用户认证文件
#–username 访问SVN 库的用户名
###查看git 本地库的情况
git branch -a #下面为命令显示,一个master库,和多个包括branch及tag的分支
master
remotes/origin/tags/t1.01
remotes/origin/tags/v1.0
remotes/origin/tags/v1.01
remotes/origin/tags/v1.02
remotes/origin/tags/v1.03
remotes/origin/tags/v1.04
remotes/origin/tags/v2.0
remotes/origin/tags/v2.01
remotes/origin/tags/v2.02
remotes/origin/tags/v2.03
remotes/origin/tags/v2.04
remotes/origin/tags/v2.05
remotes/origin/tags/v2.06
remotes/origin/tags/v2.07
remotes/origin/tags/v2.07@459
remotes/origin/tags/v2.08
remotes/origin/tags/v2.09
remotes/origin/tags/v2.10
remotes/origin/tags/v2.11
remotes/origin/tags/v2.12
remotes/origin/trunk
remotes/origin/v1.0_fix
4、在本地的git库上处理branch和tags
#先同步数据有条件把SVN的关掉,不要让用户再向SVN做递交
cd /data/git/vr
git svn fetch
#转换所有branchs
for i in git branch -r | grep -v trunk | grep -v tags | awk -F/ '{print $2}'; do git checkout -b $i origin/$i; done
#转换所有tags
for i in git branch -r | grep tags | awk -F/ '{print $3}'; do git checkout -b $i origin/tags/$i; git checkout master; git tag $i $i; git branch -D $i; done
#再次同步,并把master与remotes/origin/trunk 合并,保证master上是最新的commit
git svn fetch
git checkout master
git svn rebase #或是git merge remotes/origin/trunk ,其实就是把remotes/origin/trunk分支的SVN最新的commit应用到git 的 master分支上
git log #查看是否是最新的commit
#clone 一个新的本地库
cd ..
git clone vr vr_new
#再做一次branch的转换
cd vr_new
for i in git branch -r | grep -v trunk | grep -v tags | awk -F/ '{print $2}'; do git checkout -b $i origin/$i; done
5、在GitLab上新建一个vr_new库(具体操作就不描述了)
6、把刚才转换好的git本地库push到GitLab的vr_new库上
git remote rm origin
git remote add origin git@gitlab:vr/vr_new.git
git push -u origin –all
git push origin –tags
7、来GitLab上查看push上来的库
8、最后给一个找到的非常好的git 中文文档链接:https://github.com/geeeeeeeeek/git-recipes/wiki
我假设你是一个技术人员,或者说是程序员。
从你的角度来说git比svn更好用,更适合敏捷开发,也许更流行。
但是站在你的老板的角度上,你的给出这种转换带来的好处,如果你的老板不是技术人员出身这种说服或者证明变得非常困难。
毕竟,git也好,SVN也好,都只是一个管理工具,不是最终产品,不是带来收益的东西,你的老板可能对此并不热心。
而且转换带来的成本你要如何计算,git服务器,备份服务器,要不要买入第三方产品如bitbucket。
转换后的开发流程的影响多大,什么code review 工具,怎么CI, CD。
建议你把这些问题想一下,列个清单和计划,然后去找老板,让老板同意你在部分项目上进行实验,然后积累迁移经验和数据,也在公司内部普遍git技能。
如何让公司从SVN改到Git?的更多相关文章
- SVN为什么比Git更好
首先我表明一个根本的立场,我个人更喜欢用Git,但是,这仅仅是一个个人偏好.当我们需要将一种技术方案带给整个团队的时候,并不是由我们的个人偏好作为主要决定因素,而应该充分去权衡利弊,选择对团队,对公司 ...
- svn老鸟转用git必须理解的概念
不都是SCM代码管理嘛,有很大区别么?很多svn老鸟都是抱着这样的心态去学习git,然后无一幸免地陷入“查阅过很多资料,依然掌握不好”的困境,至少我们团队是这样的. 网上的资料确实已经很多了,却没有把 ...
- 将代码库从 SVN 迁移至 Git 并保留所有 commit 记录
公司内部原本使用 SVN 进行版本控制,但随着 Github 的流行我个人的代码管理习惯逐渐转变.虽然公司项目并非开源,SVN 所具有的标准 trunk / branches / tags 结构完全够 ...
- git学习------>从SVN迁移到Git之后,项目开发代码继续在SVN提交,如何同步迁移之后继续在SVN提交的代码到Git?
最近逐步逐步的将公司的项目都从SVN往Git迁移了,但是想团队成员都能够一步到位就迁移到Git是不可能的,因为还有大部分人都还不会Git,所以整个过渡过程估计得大半年. 因此导致虽然项目迁移过来了,但 ...
- svn迁移到git
步骤命令如下: > git svn clone https://svn-url/ProjectName --no-metadata --authors-file=user.txt --trunk ...
- svn 版本转为git
git clone 相当于git init 和 git svn fetch.git svn rease git svn fetch 从svn服务器取指定区间的版本转化成git库 git svn reb ...
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- SVN迁移到Git的过程(+ 一些技巧)
SVN迁移到Git的过程(+ 一些技巧) 李顺利 Key Words SVN,Git,Clone,Conversion,Tips,VCS,Pro Git 关于在VCS中SVN和Git之间的迁移(Clo ...
- SVN迁移到Git的过程(+ 一些技巧
关于在VCS中SVN和Git之间的迁移(Clone)这个部分网上已经有大批的文章介绍,而且都非常不错,能够满足我们的常见的需求,这里介绍的是我自己整理的一些技巧和使用中出现的一些问题和疑问.阅读本篇文 ...
随机推荐
- C#470多例winform 界面特效的源码
一共470多例winform 界面特效的源码. 窗体与界面设计... 9 实例001 带历史信息的菜单 10 实例002 菜单动态合并 12 实例003 像开始菜单一样漂亮的菜单.. ...
- jmeter-Foreach控制器与正则表达式
使用正则表达式提取器匹配的id值有17个(参考上一篇) 如果我想对每个id值进行请求,这个时候就可以用到foreach控制器 添加 由于我正则表达式取值命名为orderid,这里就将orderid设置 ...
- ceph存储 ceph Bluestore的架构
ceph 目前是开源社区比较流行的分布式块存储系统,其以良好的架构,稳定性和完善的数据服务功能,获得的了广泛的部署和应用. 目前ceph 最大的问题是其性能相对较差,特别是无法发挥SSD等高速设备的硬 ...
- C-RAN
无线接入网(RAN)是移动运营商赖以生存的重要资产.传统的无线接入网具有以下特点: 1. 每一个基站连接若干个固定数量的扇区天线,并覆盖小片区域,每个基站只能处理本小区收发信号: 2. 系统的容量是干 ...
- mysql升级的一些踩坑点
升级的方法一般有两类: 1.利用mysqldump来直接导出sql文件,导入到新库中,这种方法最省事也最保险 缺点:大库的mysqldump费时费力. 2.直接替换掉 mysql 的安装目录和 my. ...
- [Kafka] - Kafka Java Producer代码实现
根据业务需要可以使用Kafka提供的Java Producer API进行产生数据,并将产生的数据发送到Kafka对应Topic的对应分区中,入口类为:Producer Kafka的Producer ...
- Java反射深入浅出
在JVM中对一个类实例的创建,有两种方式,一种是编译时,一种是运行时.两种方式在开发过程中都是十分重要的.在Java中无时无刻无处不在的Java对象,实例化的过程也就变得尤为引人瞩目.我们经常用new ...
- 禁用Browser Link
Browser Link是VS 2013开始引入的一个强大功能,让前端代码(比如AngularJS的代码)在VS中的修改更加轻而易举. 前端代码是运行在浏览器中,而Visual Studio通常只会和 ...
- 删除 mac 垃圾桶内清除不掉的文件
命令行 内 $ sudo rm -rf ~/.Trash/
- Installing Forms Developer 10g and Reports 32-bit on 64-bit Windows versions(win7 or win10)
E-Business Suite 12.1 and 12.2 require Forms Developer 10g and Reports Designer 10g. Forms Develope ...