什么是版本控制
记录一个或若干文件内容变化,便于将来查阅。
版本控制系统
CVS
本地版本控制系统
复制整个项目,保存在不同文件夹中。
优点:简单
缺点:易犯错、易混淆、数据可能丢失
问题:如何更好的进行版本控制?
解决:本地版本控制系统。
原理:大多采用简单的数据库来记录文件的历次更新差异。
例如:RCS
RCS原理:在硬盘上保存补丁集(补丁式文件修订前后的变化),通过补丁计算各个版本内容
集中化的版本控制系统(简称CVCS)
问题:如何让不同系统上的开发者协同工作?
解决:集中化版本控制系统。
原理:有一个单一集中管理的服务器,保存所有文件的修订版本。协同工作的人们通过客户端连到这台服务器,取出最新的文件或者提交更新。
例如:CVS、Subversion、Perforce
优点:
可以看到别人在项目中做了什么
方便管理员管理(开发者权限、只管理一个CVSC不用每个客户端都管理)
缺点:
中央服务器故障,宕机的时候谁都没法提交更新。
中央数据库磁盘损坏,又没备份,所有数据都丢失了。
分布式版本控制系统(简称DVCS)
问题:如何解决CVCS的缺点呢?
解决:分布式版本控制系统。
原理:客户端把代码仓库完全镜像下来。
例如:Git、Mercurial、Bazaar、Darcs
优点:
任何一处服务器发生故障,都可以用任何一个镜像本地仓库恢复。
许多这类系统都可以指定和若干不同的远端代码仓库进行交互。籍此,你就可以在同一个项目中,分别和不同工作小组的人相互协作。 你可以根据需要设定不同的协作流程,比如层次模型式的工作流,而这在以前的集中式系统中是无法实现的。