git和svn的区别
git和svn都是在开发过程中用于项目配置项管理的工具,他们究竟有何区别,我们在做项目开发时应当如何选择,下面将对这两个工具做一对比,以供参考。
git和svn简介
GIT (分布式版本控制系统)是一个开源的分布式版本控制系统,可以有效、高速地处理从很小到非常大的项目版本管理。
SVN是subversion的缩写,是一个开放源代码的版本控制系统,通过采用分支管理系统的高效管理,实现共享资源,实现最终集中式的管理。
区别
从简介中我们可以看出两者的一个区别:Git是分布式的,SVN是集中式的
集中式的往往都有一个缺点,那便是当中央服务器因为某些原因宕机之后,所有的客户端都将无法访问中央服务器,这就意味着当svn的中央服务器挂掉之后,我们无法获取到任何的历史版本变动信息,整个项目在中央服务器恢复之前将无法继续推进。
而分布式的则不会出现上述问题,在分布式中,每一个客户端都可充当服务器角色,即使在次网络中有一部分结点损坏,其他节点的工作也不会受到影响。
svn的代码管理模式
每个项目开发者都直接对中央仓库进行操作,同时修改的记录及历史版本信息也全部存储在中央服务器中,即只有连接了中央服务器才能进行拉取及提交还有历史版本信息查询及回滚等操作。
git的代码管理模式
每个项目开发者在本地都会有一个本地仓库,它作为中央仓库的镜像存在,提交时先提交到本地仓库与原版本做比对,然后将修改的部分作为补丁,提交到主开发者,由主开发者对补丁进再次校验,确认无误后合并到中央仓库并向所有开发者推送项目版本更新信息,所有的开发者便可以及时更新本地仓库。
这种模式下,项目的修改内容及版本记录同时存在于公共服务器及所有参与开发的人员的本地,即使部分人员的本地仓库损坏也可从公共服务器或同组开发人员的本地仓库获取这些信息,同时在离线状态下也可以向本地仓库进行提交操作。
总结
综合来看,两者最大的区别其实就是有无本地仓库,这便是项目能否在离线状态下进行各种版本相关操作的关键所在。