--好像没提到我最反感的地方“靠文件共享实现”,不过评论者倒是提到了。。。。
VisualSourceSafe有这么差吗?
--------------------------------------------------------------------------------
2006.09.21 标签: VisualSourceSafe 版本控制
Jeff Atwood昨天写了一篇blog《Source Control: Anything But SourceSafe》,说版本控制可以用任何工具,但绝不能是VisualSourceSafe。
这么耸人听闻的标题,确实吓到了我,对VisualSourceSafe的评价怎么那么差呢。
这篇blog的缘起,是FinalBuilder(一个有名的商业化软件配置管理工具)的创建公司VSoft对它的客户进行了一项版本控制管理工具的调查,which version control systems do you currently use, or plan to use, in the next 12 months?【http://www.vsoft-tech.com.au/Default.aspx?tabid=77&EntryID=190】
一年多时间过去了,VisualSourceSafe的份额虽然有所下降,但仍然高居榜首。两个涨势喜人的是Subversion和Microsoft的SDLC工具Team System。
Jeff说:
The more customers I visit, and the more developers I talk to, the more I believe that SourceSafe poisons the minds of software developers.(加粗可见其愤慨,呵呵)
Jeff举的VisualSourceSafe罪状主要有两点:
VisualSourceSafe让你误以为你的版本控制是可控和安全的,实际上给项目引入隐患(我解释一下,Jeff的意思可能是说VisualSourceSafe的签入签出易用性,会让开发者对版本控制产生依赖,以为一切扔给版本控制就行,但SourceSafe不safe,VisualSourceSafe默认是单线开发,没有branch,就是说整个项目事实上只有一个版本,在项目后期会事情变得一团糟,大量的文件,每个本该相关的文件大量的毫无关联的版本号以及revert,让人难以找到一个特定的可控的版本,实际上版本控制是一个整体工程,比如branch操作, label操作都需要对项目的评估来进行。VisualSourceSafe在单个文件上的易用性容易让人在整个项目的管理上陷入困境。)。
使用VisualSourceSafe使开发者养成诸多坏毛病:不喜欢使用版本分支,不必要的文件锁定(我解释一下,和现代版本控制工具不同,VSS6默认check out会锁定文件,由此在check in之前其他人无法修改这份文件,虽然VSS6也可以配置成现代的merge模式,但绝大多数公司不会这么做,VSS2005在创建版本仓库的时候会让选择是lock还是merge模式。)太容易永久性删除文件(我解释一下,VSS中删除文件时会提示是否permanent 就是永久删除,永久删除会导致这个文件在版本仓库中的前因后果都找不到了,而在Subversion中是无法永久删除一个文件的,这样被删文件的将来看不到了,但过去还存在可以有据可查。)
Jeff在最后给出了建议,“how do we learn modern source control?”,关于现代版本控制方法学:
Eric Sink的系列文章《Source Control HOWTO》,Jeff认为Eric是就这个话题来说有相当的发言权的人。
Subversion的在线手册。
Chris Birmele的一份文档Branching & Merging Primer.doc
VSS6就默认模式来说,确实不适合大型项目大型团队的开发,只能算是一个light-weight的版本控制工具,,依赖它是相当不好的,但是VisualSourceSafe2005有相当大的改进, branch,Merge,Shadow等等模式一应俱全,角色权限管理也非常棒,而且也支持了internet访问,基于GUI的界面也很友好,已经和 VSS6 相比天上地下了,Jeff想必是对VSS6 印象太坏了所以忽略了VisualSourceSafe2005了。
Anyway,Jeff给出了一个正确的把握Version control的入门方向,这篇文章很赞。
虽然VisualSourceSafe2005非常强大,我们团队用的一个内部工具也很强大(最显著的特点就是快),但我还是会在手头这个项目告一段落,闲下来之后,推动团队转移到Team System上来,一提到它,我就倒吸一口凉气:“太强大了!!!”
文章来源:http://onlyhujian.spaces.live.com/Blog/cns!B45C4FBBFBBE1117!197.entry
fan0316 2006-9-21 18:04:11
不是好不好的问题,而是用的人多不多的问题!
chewinggum 2006-9-21 17:45:11
谁说VSS6没有branch的?就在刚才我还在拉分支 checkout 不锁定那么多人同时修改同时checkin怎么保证最后保存的是最新的版本而没有交叉修改?如果你不喜欢锁定设置为merge,只不过默认的不是如此而已。永久性删除可以在用户权限中禁止也就解决了。
BinaryPoet 2006-9-21 14:44:00
至少VS2005是支持branch-merging的。
jacklondon 2006-9-21 11:45:43
VSS 有 branch 功能。说没有意味着你对 VSS 了解太少。 VSS 主要问题是必须对版本管理仓库进行文件共享,这样可能别人会直接在文件管理器中删除文件,这是安全隐患。锁机制我觉得很好没有什么问题。首先,项目管理中,在任务分配的时候,就应该避免多个人同时改一个文件。其次,多个人改同一文件,很有可能导致重复劳动,多个人就同一个问题进行了不同的修改,实际上只需要采用其中一个修改方案,其余人都在做无用功。从项目管理角度,这是很糟糕的。