git跟svn 服务端对比

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

时间: 02-14

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

linux svn 服务端搭建

环境是centos6.x. 关于团队对代码管理,相信大部分人习惯于svn.不过我个人比较喜欢git的.这个blog git 常用命令 就是介绍git的基本用法.现部署svn服务端方式如下: 1. 用yum安装如下: yum install subversion2. 输入 svn --help可以查看svn的使用方法. usage: svn <subcommand> [options] [args] Subversion command-line client, version 1.6.11.

Windows上安装配置SVN服务端

一.安装包 下载地址:http://subversion.apache.org/packages.html 此处下载Win32Svn版本(32位及64位系统都可用),下载完成后双击.msi文件,然后根据步骤提示安装即可. 二.配置 1.在磁盘上创建一个文件夹,用于保存svn的资源库,比如E:\svndata(后面步骤的操作都基于这个目录). 2.打开cmd,执行以下命令创建资源库(此处假设要开发的项目名为demo): svnadmin create E:\svndata\demo 执行完成后可以

阿里云ESC搭建SVN服务端

CentOS7)下yum命令快速安装svn服务端,学习在思考中独孤中度过,在孤独中进取! 01.SVN服务的安装(subversion) 02.ESC安全组策略 1.在线安装svn服务 $ sudo yum install subversion 测试安装是否成功: $ svnserve --version 2. 建立版本库 创建svn数据目录(subversion默认是把/var/svn作为数据根目录的,开机启动默认也是从这里): $ sudo mkdir -p /svn_root/ 创建版本库

CentOS 7.0版本下安装SVN服务端示例

一.安装部署环境 VMBox虚拟机.CentOS 7系统.4G内存.20Gb存储空间 二.基础环境建立 1.安装VMBox虚拟机: 2.启动VMBox虚拟机,安装CentOS系统[安装过程略,注意root密码]. 3.启动CentOS系统,并登录root账号. 三.CentOS配置工程 配置CentOS网络,虚拟机CentOS可以访问外网.该步骤必须先配置DNS,否则联网更新.下载操作将会报错. 查询网络配置文件所在位置及名称:cd /etc/sysconfig/network-scripts/

使用阿里云服务器搭建svn服务端

前言:我这边使用的是windows server2012 1.svn服务端安装 安装过程与工程创建参考这我篇文章https://www.cnblogs.com/gj-blog/p/9355373.html 2.配置svn服务端 到这一步,你应该已经安装了svn服务端,并且创建了项目工程与用户 2.1先配置VisualSVN Server 点击ok 2.2配置阿里云服务器安全组规则 打开浏览器登录阿里云域名控制台并登录 点击管理 点击本实例安全组 点击配置规则 添加安全组规则 点击确定. 3.连接

SVN服务端安装和仓库的创建

1.安装SVN服务端 双击运行: 点击[next] 勾上复选框,点击[next] 使用默认选项,点击[next] 点击[Standard Edition]建议端口号不用443,因为Vmware占用了,改成其他的. 点击[next],如果出现端口被占用,可以采用以下两种解决办法: 第一种:停止服务中VMWare WorkStation Server服务 第二种:改变svn的端口号. 点击[install] 点击[finish]安装完成.重启计算机! 2.创建仓库 找到SVN的安装目录,在目录中找到

SVN服务端安装

1 首先安装SVN和Subversion. 安装文件可自行百度. 2 在服务端创建版本库. 我的安装目录是c:\Program Files(x86)\Subversion. 安装完成后在安装目录下shift+右键,选择在此处打开命令窗口. 输入:svnadmin create e:\svn_root 3 设置用户密码 在e:\svn_root\conf目录下找到svnserve.conf,用记事本打开,找到# password-db = passwd,将前面的#删除,保存关闭同一目录下找到pas

Centos7.2搭建SVN服务端完整配置

SVN是版本控制subversion的简称主要功能是对文档[java,conf,shell,PPT]多人协作办公 服务端 192.168.2.100 安装软件#yum -y install subversion 创建仓科目录 #mkdir  /var/svn/                  //普通目录#svnadmin create /var/svn/project    //创建仓库 导入一些文档 配置文件 shell java或php脚本 #cd /usr/lib/systemd/sy

(转)SVN 服务端、客户端安装及配置、导入导出项目

SVN服务器搭建和使用(一) Subversion是优秀的版本控制工具,其具体的的优点和详细介绍,这里就不再多说. 首先来下载和搭建SVN服务器. 现在Subversion已经迁移到apache网站上了,下载地址: http://subversion.apache.org/packages.html 这是二进制文件包的下载地址,你可在左侧的导航栏找到源代码,文档的下载地址. windows操作系统下面的二进制文件包一共有5种,如图: 个人认为最好用VisualSVN server 服务端和 To