版本管理工具的前期调研—SVN和Git

1 SVN和Git工具简介

SVN是Subverion的简称,Subversion 是一个 “集中式” 的信息共享平台,他的核心部分是数据中央仓库(Repository)。因此,在SVN搭建过程中,必须首先在实验室机器上安装SVN服务器端程序,并在服务器上创建数据总仓库,然后在它下面根据不同的任务创建子仓库,最终形成一种树状结构。
Git 是一个免费的、开源的分布式版本控制系统。可以快速高效地处理从小型到大型的各种项目。它具有廉价的本地库,方便的暂存区域和多个工作流分支等特性。其性能优于 Subversion、CVS、Perforce 和 ClearCase 等版本控制工具。

2 SVN和Git的区别

集中式版本控制系统:所有的版本库是放在中央服务器中的,也就是说我们每一次的修改上传都是保存在中央服务器中的。中央服务器就是个大仓库,大家把产品代码都上传里面,每一次需要改进和完善的时候,需要去仓库里面把文件给提出来,然后再操作。
分布式版本控制系统:分布式版本控制系统根本没有“中央服务器”,每个人的电脑上都是一个完整的版本库。使用分布式版本控制系统,我们平时工作的时候,就不需要联网了,因为版本库就在自己的电脑上。对于多人协作,比方说你在自己电脑上改了文件 A,你的同事也在他的电脑上改了文件 A,这时,你们俩之间只需把各自的修改推送给对方,就可以互相看到对方的修改了。

3优缺点说明

3.1 SVN相较于Git的优势

1.卓越的架构性能
支持像 SVN 这样的集中式版本控制架构的一件事是,它可以有效地处理网络流量并确保团队和开发人员之间的同步。
当使用 SVN 时,您只需要同步本地和服务器上最新内容之间的差异。这比使用 Git 快得多。由于它是分布式的,您必须下载所有更改,即使这些更改添加了数千兆字节的无用资产,这些资产已从分支中删除。这是一种浪费,尤其是当您在拥挤的网络上工作并且在存储库同步时。

2.更好地处理二进制文件
也许 SVN 与 Git 相比最无可争议的优势在于它处理二进制文件的方式。这种优势的原因是 Subversion 为 Lock-Modify-Unlock 模型提供的支持。它是在 SVN 中使用 lock 命令(svn:needs-lock 属性)实现的,而Git由于其分布式特性根本不提供独占文件锁定。
对于代码库中具有多个不可合并二进制资产的企业项目,这是一个真正的交易破坏者,通常也是他们选择坚持使用 SVN 的原因。

3.可用性和易用性
所有同时掌握 Git 和 SVN 的开发者都必须承认,Git 的命令实在太多了,日常工作需要掌握add,commit,status,fetch,push,rebase等,若要熟练掌握,还必须掌握rebase和merge的区别,fetch和pull的区别等,除此之外,还有cherry-pick,submodule,stash等功能。
在易用性这方面,SVN简单易上手,对新手很友好。但是从另外一方面看,Git 命令多意味着功能多,用处广泛。

3.2 Git相较于SVN的优势

1.版本库本地化,支持离线提交,相对独立不影响协同开发
Git 的分布式特性确保可以在本地且独立于主存储库推送和提交代码。这使得 Git 版本控制不仅减轻了网络流量,而且还确保独立于中央服务器。
每个开发者都拥有自己的版本控制库,在自己的版本库上可以任意的执行提交代码、创建分支等行为。例如,开发者认为自己提交的代码有问题?没关系,因为版本库是自己的,回滚历史、反复提交、归并分支并不会影响到其他开发者。

2.把内容按元数据方式存储,完整克隆版本库
所有版本信息位于.git目录中,它是处于你的机器上的一个克隆版的版本库,它拥有中心版本库上所有的东西,例如标签、分支、版本记录等。

3.分布式版本库,无单点故障,内容完整性好
内容存储使用的是SHA-1哈希算法。这能确保代码内容的完整性,确保在遇到磁盘故障和网络问题时降低对版本库的破坏。

4.支持快速切换分支方便合并,比较合并性能好
在同一目录下即可切换不同的分支,方便合并,且合并文件速度比SVN快。

参考 百度百科

补充以下内容:

SVN简介

SVN是subvision的简称,是一个开放源代码的版本控制系统,支持大多数常见的操作系统。作为一个开源的版本控制系统,subvision管理着随时间改变的数据。这些数据放置在一个中央资料档案(repository)库中。这个档案库很像一个普通的文件服务器,不过它会记住每一次文件的变动。这样你就可以把档案恢复到旧的版本,或是浏览文件的变动历史。Subverion是一个通用的系统,可用来管理任何类型的文件,其中包括程序源码。

SVN采用客户端/服务器体系,项目的各种版本都存储在服务器上,程序开发人员首先将从服务器上获得一份项目的最新版本,并将其复制到本机,然后在此基础上,每个开发人员可以在自己的客户端进行独立的开发工作,并且可以随时将新代码提交给服务器。当然也可以通过更新操作获取服务器上的最新代码,从而保持与其他开发者所使用版本的一致性。

SVN的客户端有两类,一类是基于Web的WebSVN等,另一类是以Tortoise SVN为代表的客户端软件。前者需要Web服务器的支持,后者需要用户在本地安装客户端,两种都有免费的开源软件供使用。SVN存储版本数据也两种方式:BDB(一种事务安全型表类型)和FSFS(一种不需要数据库的存储系统)。因为BDB方式在服务器中断时,有可能锁住数据,所以还是FSFS方式更安全一点。

SVN工作机制

SVN系统具体是如何实现对项目软件的版本控制,一方面通过实现历史操作记录查阅。在任意一台服务器中都可以添加一个SVN版本库,而相应的版本库中存放大量的程序和文档,而这些项目资源主要通过配置管理员依据不同的配置管理计划对不同项目的组员分配与之相符合的访问权限,进而实现对资源的统一管理;只有SVN标本过版本库中的资源,项目组成员可以对版本资源库中的资源进行访问。

一次简单的访问过程包括:相关项目组员首先在客户操作端建立一个从版本库检索出来的项目文件,而后就可以对拷贝的档案进行修改,最后通过SVN提交命令将其修改后的项目文件提交到终端服务器,终端服务器最终会对修改后的项目文件做最后的综合更新记录

修改过的文件在修改未被提交到服务器前,SVN服务器只会对已经提交到网络端服务器的项目文档进行更新审核,并与其他人的合并,在此之前修改过的文档是保密的,提交之后SVN络端服务器会将修改后与修改之前的数据进行比较,并在后台对修改内容就行标注显示,进而实现对历史操作记录的更新记载。最终实现项目组组员既能检索出旧版本,又能通过SVN实现新旧版本的对比,另一方面SVN通过进行组员间的协同开发实现对项目软件的版本控制。协同开发一般是指版本控制系统间接受并处理不同用户提交的各种不同性质版本的资源代码,同时允许各个用户之间在遵循相应规则范围内实现合作开发。如何处理好有矛盾的版本控制系统才是能够协同开发的关键,像是多个程序编码员同时对同一份资源代码进行修改、提交到SVN版本库,就有可能发生提交后的版本意见想法相冲等问题

SVN的优势

1 存储

SVN服务器既具有CVS所具有数据储存的优点,像是信息资源存储后会形成资源树结构,便于存储的同时,数据一般不会丢失,同时又拥有自己的特色。SVN是通过关系数据库及二进制的存储方式,同时解决了既往不能同时读写同一文件等问题,同时增添了自己特有的“零或一”原则。

2 速度

与人们初始的CVS相比,SVN在速度运行方面有很大提升。因为SVN服务器只支持少量的信息、资源传输,与其他系统相比,更支持的是离线模式,因此避免了网络拥挤现象的出现。

3 安全性

SVN是一种技术性更加安全的产品,实现了系统和控制两方面的结合。一方面可以将系统整体的安全功能有效地分布在分支系统中,进而保证分支系统能正常运行,从而使各分支系统能够互补,最终在系统整体性的安全性得以保障,通过均衡原则实现最终追求安全的目的。

SVN版次

Subversion使用**“偶数/奇数”版次模式**。偶数编号的小数点版次(1.0、1.2等)被认为是稳定的版次。这样的版次只针对问题的修正才会变动,不会增加新功能,而且用户会期待使用的软件没问题。相反地,奇数编号的小数点版次(1.1、1.3等)是开发(development)版本。在这样的版本中会增加新功能,它们倾向于快速的变更与变革,且有可能会有使得数据遗失的缺陷或问题。如果稳定性与数据保存性对你而言是重要的,则你应该使用偶数编号的版次。

SVN和Git优劣对比相关推荐

  1. 【转】SVN 与 GIT 详细对比

    [转]SVN 与 GIT 详细对比 git和svn的详细对比 近期就[版本管理工具是否进行切换SVN->Git]的问题进行了讨论,于是对svn和Git进行了相关研究,进而梳理出Git的特点(优. ...

  2. GIT与SVN的底层原理对比

    GIT与SVN的底层原理对比 文件版本对比 文件版本对比 二者都是基于二进制文件存储; git是通过文件快照(相当于生成新的文件[如果文件内容发生变化]); svn是保存上下文件版本的差异性文件; g ...

  3. SVN和Git对比梳理

    在日常运维工作中,经常会用到版本控制系统,目前用到最广泛的版本控制器就是SVN和Git,那么这两者之间有什么不同之处呢? SVN(Subversion)是集中式管理的版本控制器,而Git是分布式管理的 ...

  4. 02 SVN 与 Git 的优缺点

    上一篇博客大致聊了聊关于版本控制系统的周边,这一篇我们就来继续唠唠作为近年来最受欢迎的两个版本控制系统的优缺点吧. 聊优缺点之前,先简单了解一下这两个这两个版本控制系统好了: 关于 SVN SVN 概 ...

  5. SVN、Git和Perforce(P4D)的故事

    版本管理系统的优劣我不想展开了,大家搜索一下就能看到大量这方面的权威讨论和对比,我只想以我的亲身经历,站在系统管理员和一线用户的角度描述一下Git.SVN.P4D这三者对于我们日常研发效率提升的真实感 ...

  6. SVN和Git的比较

    最近开始学Git,跟以前常用的SVN来做个对比,以便对双方的优缺点了解更多些. 其实Git和SVN还是挺像的,都有提交,合并等操作,看来这是源码管理工具的基本操作. 1. Git是分布式的,SVN是集 ...

  7. 4种常见分支模式解析及优劣对比 | 研发效能提升36计

    摘要:4 种常见分支模式解析及优劣对比.团队研发的本质并不是团队规模越大,研发的效率就越高.我们以为团队规模越大,研发效率就会越高,可以做越多的东西,但是我们发现团队规模大到一定程度,整个研发效率是会 ...

  8. 深圳软件测试培训:SVN与Git的差异

    深圳软件测试培训:SVN与Git的差异 1. Subversion属于集中式的版本控制系统 集中式的版本控制系统都有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到 ...

  9. svn和git的选择

    结论 先说通俗易懂的结论: 当研发成本比较低,协作开发人数不多,开发人员对于版本管理的水平参差不齐的时候,或者对于代码的安全性要求更高一点的时候,适合用svn 而对于很多人参与开发,代码量比较大,或者 ...

  10. 虚拟DOM的实现原理和优劣对比

    虚拟DOM的实现原理和优劣对比 Web界面由DOM树(树的意思是数据结构)来构建,当其中一部分发生变化时,其实就是对应某个DOM节点发生了变化. 虚拟DOM就是为了解决浏览器性能问题而被设计出来的.如 ...

最新文章

  1. 函数声明末尾的“ const”是什么意思? [重复]
  2. boost::histogram模块实现导向轴的测试程序
  3. JAVA设计模式--单例模式
  4. pathon和python_Python文件和目录操作详解
  5. textarea的光标自动居左的问题
  6. 哈希表和红黑树的对比
  7. python中urlLib的使用
  8. python中右对齐_python中如何右对齐-问答-阿里云开发者社区-阿里云
  9. java开发常用的工具类_java开发常用工具类
  10. css margin
  11. 智能家居系统c语言源代码,智能家居软件设计(附源程序).doc
  12. 复信号与信号的I/Q值
  13. 好嗨游戏:战火重燃!2019LPL夏季赛精彩看点全盘点! || 附夏季赛赛程表
  14. 网络平台运行计算机终端,Terminal是什么意思?Mac如何打开终端Terminal?
  15. SubShader中的LOD
  16. 台式机win10系统能连接上wifi,但是不能上网,终于解决了
  17. Win11 专业工作站版安装安卓子系统方法 (离线包安装)
  18. python pandas 在现有excel中插入新数据
  19. 【HTML】HTML网页设计-----可爱多肉网页设计
  20. OSChina 周六乱弹 ——这么桃色的故事,让张老汉讲述……

热门文章

  1. [CATARC_2017] 第一周
  2. 小程序点击图片查看详情
  3. 汽车can总线协议c语言,CAN总线自定义协议使用说明.pdf
  4. C++ 实现计算24点
  5. Android手机投屏利器米卓同屏助手
  6. 基于STM32制作万能遥控器---1
  7. Java修改文件夹名称
  8. python 知乎 sklearn_最全知乎专栏合集:编程、python、爬虫、数据分析、挖掘、ML、NLP、DL......
  9. 市场热门身份证识别性能测评对比
  10. c++识别图片身份证号码