首先介绍几个版本控制软件相互比较的重要依据,更详细的比较请参考文中链接:

* 版本库模型(Repository model):描述了多个源码版本库副本间的关系,有客户端/服务器和分布式两种模式。在客户端/服务器模式下,每一用户通过客户端访问位于服务器的主版本库,每一客户机只需保存它所关注的文件副本,对当前工作副本(working copy)的更改只有在提交到服务器之后,其它用户才能看到对应文件的修改。而在分布式模式下,这些源码版本库副本间是对等的实体,用户的机器出了保存他们的工作副本外,还拥有本地版本库的历史信息。

* 并发模式(Concurrency model):描述了当同时对同一工作副本/文件进行更改或编辑时,如何管理这种冲突以避免产生无意义的数据,有排它锁和合并模式。在排它锁模式下,只有发出请求并获得当前文件排它锁的用户才能对对该文件进行更改。而在合并模式下,用户可以随意编辑或更改文件,但可能随时会被通知存在冲突(两个或多个用户同时编辑同一文件),于是版本控制工具或用户需要合并更改以解决这种冲突。因此,几乎所有的分布式版本控制软件采用合并方式解决并发冲突。

* 历史模式(History model):描述了如何在版本库中存贮文件的更改信息,有快照和改变集两种模式。在快照模式下,版本库会分别存储更改发生前后的工作副本;而在改变集模式下,版本库除了保存更改发生前的工作副本外,只保存更改发生后的改变信息。

* 变更范围(Scope of change):描述了版本编号是针对单个文件还是整个目录树。

* 网络协议(Network protocols):描述了多个版本库间进行同步时采用的网络协议。

* 原子提交性(Atomic commit):描述了在提交更改时,能否保证所有更改要么全部提交或合并,要么不会发生任何改变。

* 部分克隆(Partial checkout/clone):是否支持只拷贝版本库中特定的子目录。

名称 版本库模型 并发模式 历史模式 变更范围 网络协议 原子提交性 部分克隆
CVS Client-server Merge Changeset File Pserver,ssh No Yes
SVN Client-server 3-way merge, recursive merge, octopus merge Changeset and Snapshot Tree custom (svn), custom (svn) over ssh, HTTP and SSL (usingWebDAV) Yes Yes
Git Distributed Merge or lock Snapshot Tree custom, custom over ssh, rsync, HTTP/HTTPS, email, bundles Yes No

主要参考链接:

http://en.wikipedia.org/wiki/Comparison_of_revision_control_software#cite_note-47

http://www.softeng.rl.ac.uk/media/uploads/publications/2010/03/cvs-svn.pdf

http://www.smashingmagazine.com/2008/09/18/the-top-7-open-source-version-control-systems/

http://jon.limedaley.com/plog/archives/2004/10/15/version-control-comparison

版本控制软件中Trunk和Branch的区别:

Trunk---软件开发过程中的主线,保存了从版本库建立到当前的信息。 Branch---软件开发过程中的分支,保存了从版本库的某一特定点(不一定是版本库建立时)到当前的信息。分支主要用于在不影响Trunk其它用户情况下进行一些关于新功能的探索性或实验性的开发,待新功能完善后它也可以合并到Trunk中。

转载于:https://www.cnblogs.com/liangxiaofeng/p/3461273.html

版本控制工具比较-CVS,SVN,GIT相关推荐

  1. 【版本工具】cvs,svn,git等版本工具区别

    ##1. 什么是版本控制工具 来自维基百科:版本控制是维护工程蓝图的标准作法,能追踪工程蓝图从诞生到定案的过程. 此外,版本控制也是一种软件工程技巧,借此能在软件开发中,确保由不同人所编辑的同一代码文 ...

  2. 版本控制概述|VSS/CVS/SVN/Git比较|Windows下SVN搭建详细介绍

    版本控制介绍 常用版本控制技术 vssVisual SourceSafe cvsConcurrent Versions System svnSubversion git 区别转自网络 SVN使用简介 ...

  3. IDEA版本控制工具VCS中使用Git

    IDEA版本控制工具VCS中使用Git,以及快捷键总结(不使用命令) 下面来看以上各场景在IDEA中对应的操作. 场景一:小张创建项目并提交到远程Git仓库 创建好项目,选择VCS - > Im ...

  4. IDEA版本控制工具VCS中使用Git,以及快捷键总结(不使用命令)

    场景介绍: 工作中多人使用版本控制软件协作开发,常见的应用场景归纳如下: 假设小组中有两个人,组长小张,组员小袁 场景一:小张创建项目并提交到远程Git仓库 场景二:小袁从远程Git仓库上获取项目源码 ...

  5. CVS/SVN/GIT

    CVS/SVN 集中式的版本控制系统 版本库是集中存放在中央服务器的,而干活的时候,用的都是自己的电脑,所以要先从中央服务器取得最新的版本,然后开始干活,干完活了,再把自己的活推送给中央服务器.中央服 ...

  6. 版本控制工具(CVS、SVN、GIT)简介

    2019独角兽企业重金招聘Python工程师标准>>> 版本控制工具:  提供完备的版本管理功能,用于存储.追踪目录(文件夹)和文件的修改历史,是软件开发者的必备工具,是软件公司的基 ...

  7. 什么是版本控制和版本控制工具?

    版本控制: 是一种思想,因为每一个问题不可能在一次解决中找到完美的答案,即写项目的时候不可能做到一次性把代码写的不需要后期修改那样子优雅和完善,所以就需要对每一次自己思路和代码进行保留(而每一次提交或 ...

  8. python开放源代码的版本控制系统_几款版本控制工具SVN、GIT、CVS及Mercurial的比较...

    版本管理 RCS,cvs,svn,git 比较 1,RCS(Revision Control System) 修订控制系统 特点 : 1), 简单 2), 使用 Lock 机制防止多个开发人员对同一个 ...

  9. 分布式版本控制工具:git与Mercurial(zz)

    分布式版本控制工具:git与Mercurial [收藏此页] [打印] 作者:cyfdecyf  2007-12-26 内容导航: 第1页 [IT168 技术文档]    说到版本控制工具,很多人可能 ...

  10. 【尚硅谷Java笔记+踩坑】Git(分布式版本控制工具)

    用于复习快速回顾 目录 1.Git 1.0.提交项目到GitHub简洁版 1.2.版本控制 1.3.版本控制工具 1.4.Git简史 1.5.Git工作机制 1.6.Git和代码托管中心 2.Git安 ...

最新文章

  1. markdown 流程图js_科学网—让Markdown支持ASCII流程图和JavaScript流程图 - 李继存的博文...
  2. 如何运用python爬游戏皮肤_Python爬虫实战之 爬取王者荣耀皮肤
  3. 行式填报表轻松搞定流水号
  4. scrapy 设置随机UA
  5. 物理层协议有哪四大特性
  6. NCRE四级网络工程师考题详解----目录分解法
  7. mac上利用minikube搭建kubernetes(k8s)环境
  8. java中几个常用的开源常用工具类
  9. 第四章——变换域处理方法
  10. FFmpeg 视频处理工具讲解
  11. 计算机办公软件海报,word知识面制作一个图文并茂的宣传海报
  12. 计算机系统应用 莫军,ARINC653分区操作系统多核处理器任务调度设计
  13. 【爬虫实战】起点中文网小说的爬取
  14. 游戏服务器背包设计与开发
  15. Ruoyi 整合Flowable UI Modeler 6.7.2
  16. java裁剪图片_Java实现图片的裁剪
  17. Microsemi Libero免费版License申请教程(2022年)
  18. QQ空间g_tk、bkn加密参数算法
  19. SSL证书收费的原因
  20. java毕业设计房产交易系统Mybatis+系统+数据库+调试部署

热门文章

  1. Windows Server2012 R2中安装SQL Server2008
  2. 技术总监夸我“索引”用的溜,我飘了......
  3. 解决navicat连接不上mysql8
  4. 每日一道剑指offer-反转链表
  5. 小米路由器刷梅林教程_小米路由器3刷X-Wrt固件教程
  6. buffer sort Oracle,SQL执行计划中的BUFFER SORT是什么意思呢,请高手指点.
  7. 解决fabric编译失败(make: *** [release/linux-amd64/bin/configtxgen] Error 1)
  8. java取html中的table_htmlunit 操作table表格(一)
  9. python中map和filter区别_Python中map、filter和reduce的使用总结
  10. vscode开发python使用教程_VSCode 支持Python