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则有自动备份机制,安全性好。

git跟svn 服务端对比的更多相关文章

  1. linux svn 服务端搭建

    环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用y ...

  2. SVN 服务端 和 客户端

    网址大全  |  EF CodeFirst  |  电视  |  MyNPOI  |  开源  |  我的皮肤  |  ASP.NET MVC4  |  前端提升  |  LINQ  |  WCF   ...

  3. 最全Linux搭建SVN服务端教程

    文章首推 支付宝接口对接 高德地图调用 验证码登录 QQ邮箱登录 今日主题:Linux搭建SVN服务端 简介 相信程序员对SVN还是不陌生的,虽然现在用Git比较多,但是SVN也是用的,SVN可以做代 ...

  4. svn服务端和eclipse配合使用

    今天弄了个svn服务器来做项目的版本控制,讲讲我做的步骤吧 1.安装svn服务端 2.下载subclipse插件 3.将subclipse插件安装到eclipse上,点击Install New Sof ...

  5. SVN服务端启动解决方案(2013-12-10 记)

     解决每一次开机都得用DOS启动SVN服务,而DOS窗口又无法关闭的情况 1.安装Setup-Subversion-1.8.5.msi搭建好SVN服务端(下载地址:http://subversion. ...

  6. suse安装svn服务端和客户端的使用

    suse安装svn服务端 一. 安装服务端 配置网络安装源(suse11sp1为例) 新建11.1.repo11.1为软件源名称,可自定义文件并添加如下内容后保存 linux-e0xg:/etc/zy ...

  7. svn服务端安装、权限修改以及客户端的使用

    2017-10-1016:10:2 svn服务端安装.权限修改以及客户端的使用 svn服务端.客户端.汉化包下载 http://pan.baidu.com/s/1c1Ogj2C 1.安装服务器端程序( ...

  8. git的CentOS服务端安装和windows客户端的使用

    git的CentOS服务端安装和windows客户端的使用 此教程以 搬瓦工vps CentOS 6 x64 的系统为环境,搭建 git 服务端.windows 7 系统为客户端. git客户端 在W ...

  9. SVN服务端和客户端的说明与操作

    版权声明:本文为博主原创文章,转载请注明原文出处. https://blog.csdn.net/zzfenglin/article/details/50936888 本节我们进一步了解SVN服务端和客 ...

随机推荐

  1. appium自动化安装(二)

    第二节  安装Android开发环境 如果你的环境是MAC那么可以直接跳过这一节.就像我们在用Selenium进行web自动化测试的时候一样,我们需要一个浏览器来执行测试脚本.那么移动端自动化测试,我 ...

  2. PHP 中for循环的一个小小改进

    注意 : 1, $size这个值可以放在for循环中的第一个 ';' 前声明, 因为这个声明只会执行一次; 2, 第二个 ';' 中的内容, 会重复运行, 所以$i < $size 这个判断会每 ...

  3. 动态合并Repeater控件数据列 Ver2

    前一版本<动态合并Repeater控件数据列>http://www.cnblogs.com/insus/p/3240848.html .今天Insus.NET重新演示它,为什么? 因为两点 ...

  4. fiddler扩展模拟弱网络环境设置

    今天在qq群中有人问到怎么模拟app弱网络环境,我查了下资料,记得之前做测试的时候是设置fiddler断点,app请求后止于fiddler断点,app一直拿不到响应结果就应该要给出网络请求失败的提示, ...

  5. 好程序员web前端分享CSS元素类型

    好程序员web前端分享CSS元素类型 目标 1.元素类型分类依据和元素类型分类 2.元素类型的转换 3.inline-block元素类型的应用 4.置换和非置换元素的概念和应用案例 一.元素类型分类依 ...

  6. poj1681(枚举or高斯消元解mod2方程组)

    题目链接: http://poj.org/problem?id=1681 题意: 有一个包含 n * n 个方格的正方形, w 表示其所在位置为白色, y 表示其所在位置为黄色. 对 (i, j) 位 ...

  7. hdu1403(后缀数组模板)

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=1403 题意: 给出两个字符串, 求他们的最长公共子串 思路: 两个字符串的最长公共子串长度显然就是两个 ...

  8. [BZOJ4521][Cqoi2016]手机号码 (数位dp)

    题目描述 人们选择手机号码时都希望号码好记.吉利.比如号码中含有几位相邻的相同数字.不含谐音不吉利的数字等.手机运营商在发行新号码时也会考虑这些因素,从号段中选取含有某些特征的号码单独出售.为了便于前 ...

  9. P1472 奶牛家谱 Cow Pedigrees

    题意:问你指定二叉树有几种 1.高度为k 2.节点数为n 3.每个点的度为0或2 爆搜------->30分QAQ 首先,因为每个节点度为0或2, 所以如果n是偶数直接输出0就行了吧(嘿嘿) 如 ...

  10. 换根DP+树的直径【洛谷P3761】 [TJOI2017]城市

    P3761 [TJOI2017]城市 题目描述 从加里敦大学城市规划专业毕业的小明来到了一个地区城市规划局工作.这个地区一共有ri座城市,<-1条高速公路,保证了任意两运城市之间都可以通过高速公 ...