信息交流、传播、提炼

nice to meet you

博客园 首页 新随笔 联系 订阅 管理

Vss与Svn 的对比

1. 支持重命名,这对 Java 开发来说非常重要。

为了得到更好的代码,开发中需要经常进行重构,重构就经常涉及到文件的重构名,而重命名中 VSS 中是不被支持的。

2. 开发的时候不一定要锁定。

一方面导致重构不方便,另一方面,不能离线开发,使用 SVN 就不同,可以带回家继续开发,回来后,提交就行了。

3. 多平台。

可以支持多个平台下的操作

4. 更好的客户端支持。

Eclipse 中的 VSS Plugin 不如它的 SVN Plugin 好用。一个在 Windows 下用的 SVN 客户端 TortoiseSVN 也比 VSS 的客户端好用(VSS 只有微软提供的一个 GUI 客户端)。

5. 更好地与外围工具集成。

各种各样的外围工具(主要是服务器端),满足多种需要。如果有需要,也可以自己写插件或管理脚本,开放的架构,允许我们这样做。

6. 方便。

一个例子:部署应用的时候,以前的做法是找出一个项目中修改过的文件,更新到服务器上去,现在可以在服务器上执行 svn export 命令,把代码库中的最新版本导出,完成部署(也可以替换回老版本)。

7. 速度与稳定性看起来都不错。

学习它的管理、它的工作方式,是值得的。而 VSS 是一个已经被逐渐抛弃的软件。如果时间不是多得没处用,那么就把时间花在最值得花的东西上面。

==============================

cvs与svn的比较

1 对重命名、删除文件的支持

cvs:不支持本地文件重命名提交

删除分remove和erase两种前者把本地和库中文件都删除后者只是删除本地文件

不能删除文件夹

svn:支持文件重命名提交系统会提示删除旧文件,创建新文件

删除本地文件提交库中文件也被删除

2 对中文路径名的支持

cvn:支持的比较好

svn:要将权限控制文件保存为svn支持的UTF-8格式

3 本地文件与库的对应关系

cvs:可以多对多

svn:一个库可以有多个工作目录但一个工作目录只能对应一个库虽然可以更改库位置但是要求很严

4 库中文件存放方式

cvs:完全用户可见方式与客户端文件夹结构完全一直(cvs生成文件除外)

svn:与vss相似,看不到文件真正的内容

5 用户、权限管理

cvs:管理员很难清楚的知道一个项目到底有多少个用户各用户的权限和密码是什么只能用分组的方式管理用户而且密码和权限还是不清晰

svn:查看、修改配置文件即可

6 权限

cvs:有read、write、creat、none这四种权限,任何人不能删除文件夹(admin也只能跑到服务器上把相应文件夹残忍删除?我暂时只知道这个方法……汗-_-‖)

svn:只有read、write、none三种权限 creat和delete权限好象和write是捆绑在一起的

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可满足局域和广域不同的网络条件,提供不同级别安全性选择,在一台专门服务器的配合下,客户可以使用任何平台开发项目。对于已经完成了开发过程进入项目维护阶段,或者进入项目升级阶段的项目,可提供完善的项目版本管理支持。不过在操作和使用上学习成本比较高。

posted on 2010-02-22 09:22  seeyou  阅读(821)  评论(0)    收藏  举报