版本控制
版本控制是一个系统,这个系统会记录一个或多个文件的内容变化,以便将来查看特定版本的修改情况。
版本控制系统的大部分使用场景是对软件代码进行版本的控制,但是,实际上,我们可以对任何类型的文件进行版本控制。
版本控制的演化历程
本地版本控制
在还没有版本控制系统之前,我们或许会通过复制整个项目的方式来保存不同的版本,不同的版本之间通过备份时间或其他的区别标志来以示区别。
这么做简单,方便查找,但是不好比对各个版本之简的差异。
为了解决这个问题,人们在很久之前就开发了许多种本地版本控制系统,大多数都是采用简单的数据库来记录文件的历次更新差异。
本地版本控制系统最流行的一种叫RCS,现近许多计算机系统上还是可以看到它的踪影。
RCS的工作原理是在硬盘上保存补丁集(补丁是指文件修顶前后的变化);通过应用所有的补丁,可以重新计算出各个版本的文件内容。
集中式的版本控制系统
本地版本控制系统无法让不同系统上的开发者协同工作,因此,集中式的版本控制系统应运而生。
例如:CVS,svn等都属于这种类型。它们之间的相同点是:都有一个单一的集中管理文件的服务器,用这台服务器保存所有文件的修改版本,不同的开发人员都通过客户端连接到这台服务器,从中取出最新的文件或提交最新的文件到这台服务器。
集中式版本控制系统相较于本地版本控制系统,开发人员可以在一定程度上看到项目中其他人正在做什么,管理员可以给每个开发者赋予一定的权限。
但是缺点也很明显,如果服务器宕机,那么版本控制系统就瘫痪了,开发者就无法协同工作。如果存储设备损坏,有没有备份的化,那么将造成丢失数据的结果。
分布式版本控制系统
为了解决集中式版本控制系统的问题,分布式版本控制系统面世了。其中最著名的莫过于git了。
分布式版本控制系统的客户端会将代码库完整的镜像下来,其中就包括完整的历史记录。
那么任何一处协同工作的机器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复过来。
参考文献
[1] Scott Chacon,Ben Straub Pro Git