一、SVN
SVN(Subversion) 属于集中化的版本控制系统,只有一个单一的服务器用来集中管理和保存所有文件的修订版本。
而协同开发的人们都通过客户端连到这台服务器,取出最新的文件或者提交更新。
注:VCS 指 Version control system(版本控制系统)
缺点:集中化的版本控制系统最显而易见的缺点是中央服务器的单点故障。如果宕机一小时,那么在这一小时内,谁都无法提交更新,也就无法协同工作。
如果中心数据库所在的磁盘发生损坏,又没有做恰当备份,毫无疑问你将丢失所有数据——包括项目的整个变更历史,只剩下人们在各自机器上保留的单独快照。
二、Git
为了解决集中化的版本控制系统的缺点,分布式版本控制系统应运而生。Git 就是分布式版本控制系统的代表。
在这类系统中,像 Git、Mercurial、Bazaar 以及 Darcs 等,客户端并不只提取最新版本的文件快照,而是把代码仓库完整地镜像下来,包括完整的历史记录。
这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。
因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
三、总结
SVN 属于集中化版本控制系统,由单一服务器集中管理,如果中央服务器出现故障,很有可能无法恢复代码仓库。
Git 属于分布式版本控制系统,每一个客户端都完整的镜像了代码仓库,即使服务器故障,也可以从任何客户端恢复代码仓库。