前言:何谓版本控制系统呐?有两种说法:一种叫法为scm,==source code management (源代码管理系统)另一种说法为vcs,==version control system

(版本控制系统),既然两种叫法都可以的话,姑且把她叫成版本控制系统吧,从名称不难看出此系统一是用来解决代码的其二是用来更新版本的。

发展历史

刚开始并没有版本控制系统一说,很多人编写代码的过程中会把代码存起来,这样越来越多的代码写在一个文件中,带来了太大的冗余,也对修改代码带来了很大

的不便捷的情况,在一本《程序员修炼之道:从小工到专家》书中提到一个例子说老板问下面的员工说昨天的进度怎么样,代码有没有做出来?其中有点员工会说

老板我没做出来,有的员工却说自己做出来了,但是被猫吃了。what!!!这尼玛。。。所以后来慢慢为了解决在开发过程中,经常需要对一个文件进行修改甚至删除

,但是我们又希望能够保存这个文件的历史记录,如果通过备份,那么管理起来会非常的复杂这些问题,提出了版本控制系统。

什么是版本控制系统?

版本控制是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统管理,我们开发当中的文件或者资源,特别是多人的开发时更是离不开!

版本控制系统实现哪些功能呢?

记录文件的所有的历史变化

随时可恢复到任何一个历史状态

多人协作开发或修改

对修改后的错误恢复

多功能的并行开发

版本控制系统的分类?

本地版本控制系统(local vcs

优点:简单,管理文本文件

缺点:只适合少量的文件 不支持网络 不支持基于项目的管理,无法实现多人协作 支持的文件类型比较单一

主要的代表:rcs(revision c ontrol system

实现模式:

 

集中化版本控制系统(centralized vcs

 

优点:适合多人团队协作开发 代码集中管理

 

缺点:出现单点故障,恢复难度大,必须连接网络,无法单机本地工作

 

代表:cvs(concurrent version system) subversion

 

实现模式:

 

分布式版本控制系统(distributed vcs

 

 

优点:适合多人团队协作开发,代码集中化管理,可以离线工作,每个计算机都有一个完整仓库 (每个计算机都是一个仓库)

代表:git,mercurial

 

实现模式:

 

未完待续。。。。