【前言】
大家都知道,Linus在1991年创建了开源的Linux,从此,Linux系统不断发展,已经成为最大的服务器系统软件了,之前的linux代码是由Linus本人通过手工方式合并代码,后来为了切合Linux的开源精神,Linus花了两周时间自己用C写了一个分布式版本控制系统,这就是Git!一个月之后,LInux系统的源码已经由Git管理了! 见识到了大牛了吧!!
【正文】
【集中式】
常见的集中式版本控制系统:CVS(最早、开源、免费),SVN(开源、免费,目前用的最多),VSS(集成在Visual studio中)…
工作流程:
我们比较熟悉的SVN是集中式的版本控制系统,回想一下在使用svn时,每次干活之前,需要先从中央服务器(服务端)取出最新的版本,然后开始工作,干完活了,工作完后推送给中央服务器。此时的中央服务器就好比是一个图书馆,如果你要修改一本书,需要先从图书馆借出来,然后回到自己家修改,改完之后,需要在送回到图书馆。
分布简图:
特点:
有一个单一的集中管理的服务器,保存所有文件的修订版本,所有代码库。
对网络的依赖性强,必须联网才能工作,上传速度受网络状况、带宽影响。
客户端记录文件内容的具体差异,每次记录有哪些文件做了更新,以及更新了哪些行的什么内容。
缺点: 中央服务器的单点故障。 如果中央服务器发生宕机,所有客户端将无法提交更新、还原、对比等,也就无法协同工作。如果磁盘发生故障,信息尚无备份,还会有数据丢失的风险。
【分布式】
常见的分布式版本控制系统:git(免费、开源)、 Mercurial(轻量级) 、Monotone(免费)…
工作流程:分布式版本控制系统是没有“中央服务器”,每个人的电脑上都是一个完整的版本库,工作的时候,不再需要联网。开始工作前,在客户端克隆出完整的代码仓库,然后就可以在家、在公交车等等随心所欲地修改代码并提交了,提交到本地电脑,等到有网的时候就可以一次性地将本地仓库推送到远端仓库(临时中心服务器)中,这样一来,每个人都可以独立进行改动资料,并且所有的改动都是在完整资料信息的环境下进行的。
分布简图:
特点:
本地客户机进行操作,离线工作,快速。
安全性高,每个人电脑里都有完整的版本库,一个人的电脑换了复制其他人的一份就可以了。
原子性提交,提交不会被打断(git)。
工作模式非常灵活(传统的集中式工作流 + 特殊工作流 + 特殊工作流和集中式工作流的组合)。
缺点: 缺少权限管理、命令复杂混乱
【集中式vs分布式】
【总结】
分布式版本控制系统的出现解决了集中式需要联网操作的弊端,纵向来看,版本控制系统的变更根据使用者需求的变化而革新,横向来看,各有利弊,对应于svn和git来说,用过才会对他们的影响更加深刻,毕竟适合的才是最好的!
PS:感谢您的阅读,不足之处多多交流(邮箱:1510079209@qq.com)