软件版本控制系统介绍

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

概念

Local Only版本控制系统(Local VCS)模型
本地计算机
工作目录
版本库 Rev 1 …… Rev n
概念

集中式版本控制系统(Centralized VCS)模 型
计算机A 服务器
工作目录
版本库 Rev 1 …… Rev n
计算机B 工作目录
概念

分布式版本控制系统(Distributed VCS)模型
计算机A(工作目录)
服务器/计算机C
源文件 版本库 Pull/Push
Pull/Push
计算机B(工作目录) Pull/Push 源文件 版本库
版本库
浅谈Subversion (SVN)

SVN,是一个开放源代码的版本控制系统,相 对于的RCS、CVS,采用了分支管理系统, 它的设计目标就是取代CVS。
浅谈Git

Git简单模型
浅谈Git

Git的工作模型——集中式
浅谈Git

Git的工作模型——管理员
浅谈Git

Git的工作模型——权限分发(金字塔式)
浅谈Git

Git的存储模型——快照存储
浅谈Git

Git的分支追踪图
浅谈Git

优点:
– –
工作模型多样化,可适用各种工作流。 分布式版本库
软件版本控制系统介绍
要点

概念 浅谈Subversion (SVN) & Git 版本控制系统的发展Байду номын сангаас
概念

一些简单的例子:



XXX 预览版/测试版/正式版/Beta/RC/Release XXX 1.0/1.1/2.0 XXX Edition 0.71…

另存为……
概念

软件版本控制系统:Version Control System

响应速度快,可离线工作,减轻服务器负担。 可在本地分支,进行开发,并且推送到本地版本库,可提高开 发人员积极性。

版本信息完整,可追踪分支历史,利于分支合并。 全球版本号(20位哈希值),非递增序列,需查询提交链获 知父子版本信息。 分布式版本库,版本信息易被公开。

缺点:
– –
VCS的发展
浅谈Subversion (SVN)

SVN的架构
浅谈Subversion (SVN)
版本库访问URL
模式 file:/// http:// https:// 访问方法 直接版本库访问(本地磁盘) 通过配置Subversion的Apache服务器的WebDAV协议 与http://相似,但是包括SSL加密。
– – –
2000年,由CVS的开发者Karl Fogel等开发人员开 发。 2009年11月,Subversion被Apache Incubator项目 所接收。 2010年1月,正式成为Apache软件基金会的一个顶 级项目。
浅谈Subversion (SVN)

SVN?
是它?

SVN≠TortoiseSVN(好比Linux内核≠发行版)
svn:// svn+ssh://
通过svnserve服务自定义的协议 与svn://相似,但通过SSH封装。
浅谈Subversion (SVN)

经典模型
User A (Rev X)
User B (Rev Y) User C (Rev Z)
Repository
Client (Working Copy)
Server (Repository)
浅谈Subversion (SVN)

SVN存储模型——增量(差异性)存储
文件A Rev 1 差异性信息 (Δ=|r2-r1|) 文件A Rev 2 版本库
浅谈Subversion (SVN)

文件共享模型——“锁定-修改-解锁”
浅谈Subversion (SVN)

文件共享模型——“拷贝-修改-合并”
浅谈Subversion (SVN)

分支示意图
浅谈Subversion (SVN)

优点:
– – – –
版本号递增,逻辑明确,符合一般人思维习惯。 版本库集中式管理,版本信息不易泄露。 唯一的版本库,代码一致性非常高。 适合开发人数不多的项目开发。

缺点:
VCS的发展
Free/open-source CVS arch (1990) GNU (2001) CVSNT (2002) (1998) Darcs Subversion DCVS (2002)(2000) Software Change Manager (1970s) SVK (2003) ClearCase(2003) (1992) Monotone CMVC (1972) (1994) Codeville (2005) SCCS Visual SourceSafe (1994) Git (2005) RCS (1982) Perforce (1995) Mercurial (2005) PVCS (1985) StarTeam (1995) Bazaar (2005) MKS Integrity Fossil (2007) (2001) AccuRev SCM (2002) Veracity (2011) SourceAnywhere (2003) TeamWare (1990s?) SourceGear Vault (2003) Code Co-op (1997) Team Foundation BitKeeper (1998)Server (2005) RationalSCM Team Concert (2008) Plastic (2006)

简称:VCS 版本记录和恢复 共享数据 追踪修改信息和责任人

功能?
– – –

核心概念:版本库(Repository) 鼻祖:SCCS(1972年)
概念

分类
Local Only:SCCS (1972年)
Centralized (Client – Server):SVN (2000年) Distributed:Git (2005年)
Server (Repository)
浅谈Subversion (SVN)

特点
– – –
集中式版本控制系统

中央版本库
User A (Rev X)
全局版本号

User B 针对目录树进行版本号记录
分支/合并

(Rev Y) User C (Rev Z)
Repository
廉价的拷贝
Client (Working Copy)
– – – –
服务器压力太大,需要频繁响应访问请求。 几乎无法离线工作。 不适合大型开源项目开发(开发人员众多且分散)。 集中式管理,容易限制开发者积极性及分支应用。
浅谈Git


Git:The stupid content tracker,傻瓜内容跟 踪器。 早期Linux的开发人员是使用BitKeeper来管理 版本控制和维护程式码。2005年的时候,开 发BitKeeper的公司同Linux内核开源社区结束 合作关系,并收回使用BitKeeper的权利。 Linus Torvalds(Linux之父)开始着手开发 Git来替代BitKeeper。
相关文档
最新文档