VSS的全名是(VisualSourceSafe),是微软公司开发的VisualStudio开发套件中的版本控制部分,你可以通过从微软购买全套的VisualStudio套件,单独购买SourceSafe来获得。因此SourceSafe拥有非常好的技术支持和非常详尽的技术文档。
CVS的全名是(ConcurrentVersionsSystem,并发版本系统),它是一个开源项目,通过
http://www.cvshome.org/网站,你直接可以获取到最新的程序或者最新的源代码,因此CVS的使用是完全免费的。由于CVS仅可以在Unix平台下使用,在windows下出现了CVSNT(
http://www.cvsnt.org/)服务器和WinCvs(
http://www.guicvs.org/)客户端等开源产品
功能
文件修改方式
VSS主要采用独占模式(check_out,modify,check_in),也可以使用(mutil_check_out,modify,check_in,merge)模式。在SourceSafe使用中独占模式使用的比较为成熟和普遍,独占模式要求每个人都必须在改动文件之前做捡出(check_out)标志,并且标志了后的文件无法被其他人修改,即文件被独占了,在完成了修改后要及时捡入(check_in),释放修改权。check_in和check_out也是人们对版本控制最开始的印象。
CVS采用了(update,modify,commit)工作方式。这是一种可以并发的版本控制方式,即每个人都可以修改自己可访问的任意代码,代码不会被一个人单独占用,两个人甚至多个人可以修改同一份代码,并且每个人的修改结果都不会被丢失。具体的操作过程为:在修改代码之前先做update,以使本地的代码最新,然后就可以修改代码了,修改完毕后,直接commit自己的修改结果。如果CVS没有发现冲突,则代码可以直接进入CVS资源库,否则,CVS则标出冲突的文件的冲突部分让你做合并。
文件历史
在这一点上VSS和CVS的功能都很近似,他们都可以保存了每个文件的变化历史,并提供了一个自动的版本号,随时可以取出任何文件的历史版本。并和当前版本做比较。都提供了自定义版本的label功能。检索历史和自定版本都非常的方便。VSS还特别提供了对时间段,或者操作人的历史操作查询,使一个人一段时间内对文件的操作一目了然。
项目版本管理
VSS并有直接对项目版本管理的支持,通过label来自定义一个版本号,可以解决部分项目版本管理的问题,但这是远远不够的,当一个产品根据用户需求产生一系列不同的项目版本时使用SourceSafe将非常难以管理。
CVS提供了比较完善的项目版本管理。CVS中可以把当前的工作定义成一个版本,一旦生成版本了则版本中的数据被单独取出,处于版本中的文件将保持只读,想获得一个项目的历史版本将轻而易举。同时,对于一个项目版本内部可以调整使用不同的文件版本。
分支功能。
CVS和VSS都提供了建立分支和合并分支的功能,但在操作中VSS首先要做项目共享,引入要分支的项目或文件然后做分支操作.CVS则是直接对文件或者项目做分支,分支操作同时建立。
开发集成
VSS可以和VisualStudio中的其他开发工具比如VB,VC++等做到直接集成,毕竟都是微软的产品么,同时由于VSS不光提供了图形界面也提供了命令行模式,所以在Windows操作系统中的大部分其他开发工具都提供了对VSS操作的集成,只要你安装了VSS的客户端。因此VSS在Windows平台下使用将会非常方便。
CVS本身是Unix系统上开发的,提供Unix上了命令行使用模式,因此和Unix上的vi、Emacs可以直接和CVS一起工作,至于Unix系统下的图形环境的开发工具比如eclipse,KDevelop和cvs集成都非常容易。本来在Windows平台上CVS的支持并不好,但近一段时间,随着WinCVS易用性越来越好,Windows下的部分开发工具已经提供了对WinCVS的支持,不过需要自己配置,而Windows下的Eclipse则直接集成了CVS,开发中可进行CVS操作。从而使Windows下CVS使用也越来越方便了。
操作界面和配置管理
VSS在Windows下提供了单独的客户端和服务器端操作界面,界面和windows操作系统风格一致,入门和使用都非常方便。即使被集成到别的开发工具中,它的使用界面也基本一样。通过工具SourceSafeAdmin,用户管理,权限管理,系统配置非常直观,基本不需要任何培训,直接看随程序自带的文档就可以准确使用。配置工具中包括了VSS数据的备份和恢复,系统自带文档相当详尽。
CVS的界面以命令行为主,在Unix平台下没有图形界面,部分图形的开发工具可能内嵌CVS客户端,在Windows平台下你可以选择用CVSNT搭建服务器,用WinCVS作为客户端。CVS服务端配置在任何平台下都需要通过命令来完成,配置过程比较复杂。有时甚至要直接编写配置文件,同时,客户端方面的培植也有些技巧。没有经过培训或者一段时间的研究和测试,无法正常使用CVS完成正常工作和用户、权限的配置管理等工作。
安全和网络
VSS仅可在局域网内部使用,服务器仅作为一个文件服务器,不需要运行任何程序或者起后台服务,但必须要共享一个可写的文件夹。这成为了目前局域网上最容易被病毒入侵的地方,必须定期做好病毒检查工作,安装病毒放火墙。安全性比较差。
CVS在局域网或者广域网内都可使用,作为服务器不需要共享任何资料,但必须起服务,占用系统资源。客户端可以是任何不同平台,都是通过TCP/IP和特定的端口来访问CVS服务器,有不同安全等级的访问协议可供选择。安全性强适用面广。
结论
SourceSafe适合在局域网范围内的,以Windows平台为主的中、小项目,以文件管理为主要功能,使用方便,学习成本低,对服务器仅需要快速大容量的存储器也是它的优势。
CVS可满足局域和广域不同的网络条件,提供不同级别安全性选择,在一台专门服务器的配合下,客户可以使用任何平台开发项目。对于已经完成了开发过程进入项目维护阶段,或者进入项目升级阶段的项目,可提供完善的项目版本管理支持。不过在操作和使用上学习成本比较高。