一、什么是版本控制系统?
版本控制是一种记录一个或者若干个文件内容的变化,以便将来查阅特定版本修订情况的系统
1、作用
记录文件的所有历史变化
随时可回复到任何一个历史状态
多人协作开发或者修改,共享数据
错误恢复
多功能的并行开发(分支功能、特性-合并操作)
追踪修改信息和责任人
2、分类
本地版本控制系统(local VCS)
集中化的控制系统(Centralizes VCS)
分布式的版本控制系统(Distributed VCS)
3、基本概念
repository——存放所有文件及历史信息
checkout ——取出或者切换到指定版本的文件
version ——记录表示一个版本(编号或者其他代码),某个特定状态下的资源
tag ——记录标识一个主要版本(1.0 2.0 3.0)
二、三种版本控制系统介绍
(1)本地版本控制系统(LVCS)——本地完整仓库(少用)
简介:在硬盘上保存补丁集(补丁是指文件修订前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。大多数采用某种简单的数据库来记录文件的历次更新差异。
最流行:RCS(Revision Control System)
优点:简单、很多系统中都有配置
适合管理文本文件
缺点:不支持网络
支持类型单一
只适合管理少量文件、不支持基于项目的管理
图示:
(2)集中式版本控制系统(CVCS)——服务器完整的仓库
简介:有一个单一的集中管理的服务器,保存所有文件的修订版本,而协同工作的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
每个人都可以在一定程度上看到项目中的其他人正在做些什么。而管理员也可以轻松掌控每个开发者的权限,并且管理一个 CVCS 要远比在各个客户端上维护本地数据库来得轻松容易。
最常用:CVS(Concurrent Version System)
优点:适合多人团队协作开发
代码集中话管理
缺点:单点故障
必须连网操作,无法单击本地工作
图示:
(3)分布式版本控制系统(DVCS)——本地和服务器都有完整的仓库
简介:客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来。这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。 因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
可以指定和若干不同的远端代码仓库进行交互。这样,你就可以在同一个项目中,分别和不同工作小组的人相互协作。
最常用:Git、Mercurial(HG)
优点:适合多人团队协作开发
代码集中化管理
可以离线工作
每个计算机都是一个完整仓库
图示:
三、版本控制系统(VCS)的前世今生
四、小结
在实践中体会版本控制系统的优劣,有了新的需求才有新的创造,不设限,不将就。