SVN是Subversion的简称,是一个开放源代码的版本控制系统,相较于RCS、CVS,它采用了分支管理系统,它的设计目标就是取代CVS。互联网上很多版本控制服务已从CVS迁移到Subversion。
VSS 的全称为 Visual Source Safe 。作为 Microsoft Visual Studio 的一名成员,它主要任务就是负责项目文件的管理,几乎可以适用任何软件项目。管理软件开发中各个不同版本的源代码和文档,占用空间小并且方便各个版本代码和文档的获取,对开发小组中对源代码的访问进行有效的协调。
VSS是基于悲观锁:“锁定--编辑—解锁”模式的,这个模式有一个弊端,就是当其他人在编辑相关单元文件的时候,此单元文件处于锁定状态,其他人如果想编辑这个单元文件的话,只能处于等待状态。
后来,在持续集成中我使用的Subversion(SVN)替代VSS,Subversion是基于乐观锁:“修改—冲突—合并”的模式,也就是说多个人可以同时签出一个单元文件,编辑然后提交,如果多个人都修改了同一文件的某一行的话,就会发生冲突,手工解决冲突。
个人感觉:这种情况极少发生,更多的时候是:a编辑了File1文件的上半部分,b在File1文件的最后又添加了一些代码,这样是不会造成冲突的,而且本身这种多人编辑同一个文件的情况就很少。b不用因为a在编辑File1文件而只能等待,他也能同时编辑File1文件,直观的好处就是这样能提高开发速度。而且Subversion提供的配置文件非常容易掌握。可以快速配置出对于整个开发团队成员负责模块的读写权限配置,而且可以有组的概念[groups],这就直接对应了团队中以小组为划分的结构。
Subversion有很多扩展工具可以选择,大部分选择的是TortoiseSVN,又名“小乌龟”,这是一个和Windows操作系统Shell绑定的工具,它把所有对Subversion的操作都包装成了可视化操作,而且由于是和操作系统绑定的,任何一个目录都可以成为存放代码副本的地方,个人觉得非常好用,而且还有很多为Subversion编写的钩子脚本,可以让我们在版本控制这一块做的更好。