微软专家

援引事类,扬搉古今,举要删芜,言辩而理切--QQ276605216

  博客园 :: 首页 :: 联系 :: 订阅 订阅 :: 管理
  39 Posts :: 1 Stories :: 35 Comments :: 1 Trackbacks

公告

昵称:Anders' Yan
园龄:5年
粉丝:0
关注:0

搜索

 
 

常用链接

我的标签

最新评论

阅读排行榜

评论排行榜

推荐排行榜

公司强制使用VSS,用SVN惯了,很不爽。整理了下面的对比,请指正

 

VSSSVN的对比整理

伪秀才

Shicheng.yan@gamil.com

2008-9-27

 

 

项目

VSS

SVN

备注

原子性提交

Atomic commit

不支持

支持

SVN无论批量提交包含多少文件修改,只有当全部文件修改都成功入库,该提交才变得有效,才对其他用户可见;否则,无论任何原因造成中断,SVN都会自动“回滚”(rollback)操作。换一个说法,SVN保证所有的修改要么全部入库生效,要么个也不入库,即对版本库不作任何修改。

重命名

不支持

支持

这对JavaC#开发很重要,为了得到更好的代码,开发中需要经常进行重构,重构就经常涉及到文件的重构名,有时会对文件重命名再提交。

最小提交块

文件

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会让你手工合并

 

Internet网络和远程协作

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下:TortoiseSVNLinux下:RapidSVN

 

自动合并

据说VS2005中也支持了?

提供,如果不能自动合并,可以手工修改冲突

 

 

 

多版本分支的合并

 

版本分支

但在操作中VSS首先要做项目共享,引入要分支的项目或文件然后做分支操作

自动建立分支

 

异地开发

支持

支持

 

操作的便利性

安装、配置、使用均简单,很容易上手使用

安装、配置较复杂,但使用简单,只需对配置管理做简单培训即可

 

版本管理

手工

通过label来自定义一个版本号,可以解决部分项目管理的问题,但这是远远不够的,当一个产品根据用户需求产生一系列不同的项目版本时使用VSS将难以管理

提交时记录版本号,自动分支管理

VSS版本发行时只能手工挑选对应的版本文件进行发布。

与外围工具集成

 

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

 

费用

商业

proprietry

开源免费

open source (Apache/BSD-style license.)

 

微软自己不用VSS,它用啥?SouceDepot

 

不同意很多人说的“工具够用就行”,就算是两件工具可以完成完全一样的功能,其设计哲学和使用方式上肯定也会有区别。如果是每天必用的工具,不够便利的,或者蹩脚的使用方式会持续的影响你工作时的心情,而谁又愿意每天工作时都被工具逼得心情不好?

 

http://www.javaeye.com/post/583660?page=1

 

使用VSS,如果我周末回家办公,怎办?把代码全部checkout,再通过vpn连加VSS

反对:如果我是甲方,要审查你的代码,svn可以直接通过http浏览代码,非常轻松,而VSS,还得装VSS客户端(license谁给?),还要用VPN连到乙方的局域网里(人家也得要有VPN啊,许多小公司网络是租用的没有vpn

 

 

SubversionVSS强的一个地方是如果文件改名了,以前的历史记录不会被丢失。呵呵,打个比方,Subversion就像一个聪明的警察,尽管罪犯虽然改名或整容了,但是他的前科还是被这个聪明警察给顺藤摸瓜给记录下来了。而VSS就像一个有点健忘的警察,罪犯名字一改,VSS就完全忘记了他的前科。

 

VSS SVN/CVS 在锁定和非锁定上的处理源自应用环境的不同.

VSS 产生于微软这样的 close source 的企业, 而在这样的企业里, 开发软件时, 团队成员间通常就在一个办公室里, 文件的锁定/解锁的协调相对容易, 任务也许可以真的分配到一个人就在一个文件上工作; , 在开源世界里, 开发人员来自世界各地, 在世界的每个角落/不同时间里参与着项目的开发, 如果你今天在北京把一个文件锁住, 晚上没做完, 没提交, 然后睡觉去, 我们美国的同志们若也参与这个功能的开发, 那么在北京时间凌晨 2:00 的时候, 你尚在美梦中, 而那边已是早上 9:00 的工作点, 这样就没法对这个文件进行修改, 只能等到你呼呼睡醒, 北京时间 9:00 上班, 而美国那边已经是 16:00, 浪费大半天, 该下班了...

 

那么我们在公司里, 是不是其实应该很适合用 VSS ? 举个简单的例子就知道不行了 - g20 项目中我们有个 g20.js 的文件, 所有 ajax 相关的功能都在这个将近 6K 行代码的文件里完成, 我们的同学们经常需要同时并行着做两个以上的功能, 这使得我们不可能采用锁定的模式. SVN 的拷贝-修改-合并模式并没有在现实中带来想像中的那么多 "冲突" - 只要功能拆解得当, 不会出现两个人同时修改同一个文件同一行的情况, 最常见的情况就是你在 200 行后加了个 function, 我在 300 行后编辑了一些条件判断.

 

 

 

 

标签: vss, svn
posted on 2008-09-27 17:28 Anders' Yan 阅读(5159) 评论(14) 编辑 收藏

Feedback

#1楼2008-09-27 17:54love&tiger      
一直用svn,感觉比vss爽
 回复 引用 查看   
我有个疑问,svn“绑定源码服务器”这个操作有吗?
 回复 引用   
#3楼2008-09-27 19:5981      
我有个疑问,svn“绑定源码服务器”这个操作有吗?
-----------------
本地当然保存有服务器的信息,要不每次打开都要指定服务器。
我公司前不久从vss转到了svn,感觉不错。
 回复 引用 查看   
#4楼2008-09-27 22:04木刀      
我最无法忍受的就是不提供"独占模式签出" 这一点, 你所说的多人同时修改同一个文件, 对公司来说其实是没有什么意义, 而且会造成混乱和问题, 当然也有同时签出的需求, 所以应该两种模式都提供, 由用户决定. 就像vss做的那样.
 回复 引用 查看   
呵呵,我们用TFS,比VSS好用多了
 回复 引用   
@木刀
SVN提供"独占模式签出" ,在SVN里面叫锁定。
 回复 引用   
vss 就是一垃圾....
 回复 引用   
用VSS时,如果一个工程里,我只想一个文件断开,其他文件受控,如何实现?好像没办法吧?
这种情况很常见,比如我不想加载太多东西,想快速跑我自己的模块时。
我想这也是VSS的缺点吧。
 回复 引用   
SVN和Visual Studio 2008一起使用太垃圾了,合并代码自己还加些标签,怎么能顺利编译呢?想自找麻烦就用SVN吧!
 回复 引用   
最近被逼着用VSS,真的是垃圾。周末下班check in了。周一发现vss服务器没有开,就离线做了一些工作,然后再连接vss服务器的时候,发现提示一大堆,完全不知道如何操作了。

而且很多完全没有编辑的文件也自动的被check out了,不知道做了什么。

以前觉得vss没有用过不想评价,现在让我再选,vss可以直接被鄙视掉了。
 回复 引用   
以前用VSS,在尝试完SVN哈CVS以后我还是回到了VSS
原因只有一个,简单!
我不需要太复杂的功能,就是在各个电脑之间签入、签出。
够用就好
另外,我不喜欢SVN的右键菜单,不喜欢它把所有文件都换成自己的图标,看着纠结
 回复 引用   
#12楼2009-12-26 11:59晴天猪      
其实 vss2005 有很大改观,只是MS不更新了,让人不爽。
 回复 引用 查看   
#13楼2011-03-14 18:27tualin      
1.楼方比了那么多优越性,怎么不同VSTS比呢。
2.服务器不开,为啥不让主管开,不获取新的版本你也写程序,不是自找苦吃吗,当然服务器坏掉的时候另外说。
3.不用独占式签出,写完程序后签入才发现版本冲突,又要合并一次很爽呀
4.我想修改一个文件,还在去在windows里找到项目所在的文件,然后获取新版本后再编辑,找文件我可不善长哦,我喜欢在VS里的解决方案管理里直接获取新版本和签入签出。
5.发现了一个BUG,我可能改了BLL文件夹里的文件,也可能改了DAL文件夹里的文件,也可能改了页面文件,BUG修复了,可是我忘记了我到底改了哪个文件。SVN可不可以告诉我,在这里项目里我到底改了哪个子文件里的哪个文件。是不是我要一个个打开BLL,DAL文件夹查看才能知道我修改了哪个文件呢。大姐我新学SVN用得不顺手,请DD指求。
 回复 引用 查看   
写的 非常不错 感谢lz 在项目中 觉的 还是SVN 好 VSS 获取文件 经常会获取不到的 唉 烦的很
 回复 引用 查看