设为首页 收藏本站
查看: 979|回复: 0

[经验分享] git跟svn 服务端对比

[复制链接]

尚未签到

发表于 2018-1-12 11:24:25 | 显示全部楼层 |阅读模式
  Git已经火了很久,简单的使用也没有问题,但有几个问题一直以来都没有搞清楚:git跟svn有哪些异同,两者相互的优劣是什么,git的分布式怎么理解,为什么有离线提交,,,自己动手,分别看一下服务端跟客户端使用有什么异同,大概也就了解了。
  选择的服务端分别是gitlab跟visual svn server。
  1、gitlab简单说明:
  svn是我们比较熟悉的,svn有服务端跟客户端;虽然git是分布式的,但平时我们使用的时候往往都是有一个服务端的,比如gitlab,github等。
  Gitlab是一个用ruby on rails开发的开源程序,支持的操作系统列表在https://about.gitlab.com/downloads/,选择自己的操作系统版本,按照该页面的命令行的三个步骤即可安装gitlab;
  不在列表中的linux系统需要自己手动下载,并编译安装(过程相对繁琐)。Gitlab安装成功后,默认端口是80,因此直接访问ip地址即可打开欢迎页面,该页面需要填入两个密码,这个密码就是root账号的密码,填写完成后会登陆到gitlab。
  2、gitlab跟svn服务端区别
  1、创建项目仓库跟用户权限设置
  使用svn,我们要把一个项目上传到server端,首先要在server端创建一个资源仓库,也就是找个地方,可以供我们上传文档,然后再上传文档。在这点上,gitlab也是类似,要先建一个project,生成一个仓库url,然后再上传项目到gitlab。
  Svn创建仓库直接右键create new repository,填入名字一直下一步即可

  创建完成后,在资源库右键,可有复制资源库路径,用浏览器打开资源库,以及新建文件夹等操作

  在properties选项卡,可以设置访问权限:

  这里资源库中每个文件都有properties选项卡,可以设置权限,也就是说svn可以控制访问权限到具体的文件跟文件夹。
  然后我们看gitlab如何操作:用户登录gitlab后默认界面如下,左侧是一个导航菜单,中间是当前用户有权限看到的项目,右侧是一些设置图标跟一个new project的按钮。

  New project过程略,项目建好后会一个项目url,这个跟svn的资源url是一样的

  我们再看一下gitlab的用户跟权限设置,点击右侧的members,给项目添加允许访问的成员

  每个角色的权限

  可以看到,gitlab是按用户跟角色对权限进行控制的,这跟svn直接对具体文件进行权限控制有所不同。
  2、 分支的处理
  Svn的分支实际是另一个独立的资源库,项目右键—分支,会让我们填写分支名字

  刷新服务端,会看到新加的分支,的确是新拷贝了一份内容

  Git的分支跟主干实际用的是同一个资源库,但在数据库中保存了每个分支的差异部分,git要新建分支直接通过git branch + 分支名称即可,git的提交历史图

  上图解释比较复杂,可以参考http://www.liaoxuefeng.com/wiki/0013739516305929606dd18361248578c67b8067c8c017b000/中的分支介绍部分进行学习。
  一言概之,svn的分支是复制整套代码,操作繁琐,git是移动了一个指针,操作简单。在资源库比较庞大,比如有几个G的时候,两者差异非常明显,svn新建一个分支可能耗时半小时甚至更长时间,而git只需要不到1秒钟。
  3、备份
  Svn的备份有不同策略,参照http://www.blogjava.net/jasmine214--love/archive/2010/09/28/333223.html
  本文对比用的visualsvn没有备份功能,只能管理员通过命令行手动备份。
  命令为:svnadmin dum 项目位置  > 备份位置。其实多数项目的svn是没有备份的(至少我接触的多数是这样),如果真的某天服务器挂掉了,不能修复,一般是利用本地文件重新上传一遍,搭建服务器;即使这样,其他人本地的svn也是没法儿跟新搭的svn服务器同步的(因为文件版本号不一致),所以出现这种情况,基本是要完蛋的。
  Gitlab支持手动跟自动备份,手动备份命令:gitlab-rake gitlab:backup:create

  备份文件在/var/opt/gitlab/backups目录下

  1485306682是个时间戳,1970年1月1日0时到当前时间的秒数,后边是日期跟名称,这个压缩包包含gitlab的所有数据。数据的恢复使用命令:
  gitlab-rake gitlab:backup:restore BACKUP=1485306682#从148530668备份的文件恢复
  gitlab-rake gitlab:backup:restore        #backups目录下只有一个备份文件时使用
  自动备份(版本gitlab-ce 8.16.2)步骤:
  a、命令行crontab –e
  b、在打开的编辑器中输入定时任务字符串:
  0 4 * * * /opt/gitlab/bin/gitlab-rake gitlab:backup:create      -- 每天凌晨4点备份
  c、重启定时任务服务service crond restart

  当然,我们可以备份到其它电脑的磁盘,并且有类似于保留一周内备份之类的设置。
  又一言概之,svn只能手动备份,且不同分支相互独立,内容很庞大。Gitlab支持手动跟自动备份,备份过程较svn快(分支多的时候内容少),且自动备份较为便捷,安全性高。
  综上:gitlab相对于svn,对权限的控制管理不同,svn可以具体到某个文件,gitlab只能控制到某个项目(也有一些对分支的权限处理);对于分支,svn是另外拷贝一份,git则是公用一套资源,在数据库记录分支差异;svn无明显对备份等安全机制的考虑,gitlab则有自动备份机制,安全性好。

运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-434226-1-1.html 上篇帖子: 使用gitLab 或 github 关联本地仓库 下篇帖子: 使用开源my-deploy工具实现开发环境的代码自动化部署
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表