VSS与SVN比较
vss是微软收费的,svn是开源免费的。
vss必须有客户端,svn可以用客户端,也可以用命令行模式,还可以用网页方式只读访问。
vss只支持windows,svn支持windows和linux。
vss是锁定-编辑-解锁模式,svn虽然也支持锁定,但默认是修改-冲突-合并模式。
vss的版本号对应的是单个文件,svn的版本号对应的是整个版本库。
目前用的最多的是svn,因为它开源、免费、有众多其它软件支持配合。
详细对比表格:
项目 | VSS | SVN | 备注 |
原子性提交 Atomic commit | 不支持 | 支持 | SVN无论批量提交包含多少文件修改,只有当全部文件修改都成功入库,该提交才变得有效,才对其他用户可见;否则,无论任何原因造成中断,SVN都会自动“回滚”(rollback)操作。换一个说法,SVN保证所有的修改要么全部入库生效,要么个也不入库,即对版本库不作任何修改。 |
重命名 | 不支持 | 支持 | 这对Java和C#开发很重要,为了得到更好的代码,开发中需要经常进行重构,重构就经常涉及到文件的重构名,有时会对文件重命名再提交。 |
最小提交块 | 文件 smallest commit block is a file | 行 a line is the smallest commit block | 最小提交块是文件,这样通过看历史很难找出某次checkin到底checkin了什么东西 |
安全性 | 基于文件系统共享实现对服务器的访问,需要共享存储目录 | SVN服务器有自己专用的数据库,文件存储不采用“共享目录”方式,所以不受限于局域网。客户端可以是不同的平台,都是通过tcp/ip和特定端口来访问SVN服务器,有不同安全等级的访问协议可供选择 | 是不是每次使用VSS的时候得登记一次服务器?麻烦了吧 |
离线开发操作 | 需要执行几个步骤也可以安全入库,但麻烦 | 不需要另外操作 |
|
模式 | 主要采用独占模式(checkout,modify,checkin)也可以使用(multi_checkout,modify,checkin,merge)模式。 | 使用update,modify,commit方式。每个人可以修改自己可以访问的任意代码,代码不会被一个人单独占用。可以多人修改同一份代码,并且每个人的修改结果都不会丢失。如果提交时SVN没有发现冲突,则代码可以直接入库。否则SVN会让你手工合并 |
|
Inte.net网络和远程协作 | VSS8.0支持 | 更适合基于互联网协作开发,速度快 |
|
支持平台 | Windows | Windows,Linux,Unix works on windows, linux, unix, and even macs and also java which makes it ultimaly portable |
|
支持开发工具 | VS6, VS.NET2005, VS.NET2008(不过有个bug) VSS Plugin for Eclipse | SVN for VS.net 2005 Plugin-AnkhSVN, 也支持vs.net2008, SVN for Eclipse |
|
客户端 | VSS client | Windows下:TortoiseSVN,Linux下:RapidSVN |
|
自动合并 | 据说VS2005中也支持了? | 提供,如果不能自动合并,可以手工修改冲突 |
|
|
| 多版本分支的合并 |
|
版本分支 | 有 但在操作中VSS首先要做项目共享,引入要分支的项目或文件然后做分支操作 | 有 自动建立分支 |
|
异地开发 | 支持 | 支持 |
|
操作的便利性 | 安装、配置、使用均简单,很容易上手使用 | 安装、配置较复杂,但使用简单,只需对配置管理做简单培训即可 |
|
版本管理 | 手工 通过label来自定义一个版本号,可以解决部分项目管理的问题,但这是远远不够的,当一个产品根据用户需求产生一系列不同的项目版本时使用VSS将难以管理 | 提交时记录版本号,自动分支管理 | VSS版本发行时只能手工挑选对应的版本文件进行发布。 |
与外围工具集成 |
| 各种各样的外围工具(主要是服务器端),满足多种需要。如果有需要也可以自己写插件或管理脚本,开放的架构,允许我们这样做。 |
|
费用 | 商业 proprietry | 开源免费 open source (Apache/BSD-style license.) |
|