Skip to content


SCM和VCS的区别,企业开发和社区开发的区别

SCM—-Software Configuration Management,软件配置管理
VCS—-Version Control System,版本控制系统

其实这是两个八竿子打不着的两个东西,但是在这里我只想从某一个侧面来阐述一下从代码的角度看这两个东西。
VCS,这是一个最常见的东西,cvs,svn,bzr等等都是VCS,这类的工具更加关注的是如何管理好代码的版本之间的关系,各个分支之间的关系。而SCM呢?功能上,除了这些,他更加注重的是管理和控制。相应的产品有Rational ClearCase,Hansky Firefly等。因为我只用过Firefly,所以我只好用这个举例子。
在Firefly中,你Checkout一个项目是有一些限制的,比如,你只能Checkout到你的C:\等,而且从管理的界面上,管理员可以很方便的看到现在有几个开发工作区。这里面要注意一个问题,如果你是svn的使用者,你会发现,你checkout的工作区,你换了地方以后还可以继续使用,比如你执行了mv proj1 proj2这样的命令行,并不妨碍你使用。但是在Firefly这类的产品中,你这样的操作就会使得你的工作区无法工作。你根本无法提交你的代码。这里面体现的是一种集中管理的思想。
企业级的开发,更多的采用是SCM这种管理方法,而社区的开发更多的是使用VCS这种工具。这里面我们可以看到一些理念上的不同,企业关注的是稳定性和管理性,而社区关注的是修改后的结果。其实,更多的还是一种对待开放的心态的问题。

从发展的角度,SCM我不清楚,而VCS的一个分支DVCS(分布式VCS)的出现更加的加剧了这种区别。DVCS出现的根本就是为了更加的开放,更加的自由,那么从理念上和那种要管道细枝末节的企业思想更加的背离。这里面的一个突出的矛盾就是企业的心态了,如果你关注的是成果,你不是好像面对一群小偷一样看着你的开发者,VCS对很多企业是足够用的。要知道,我们是程序员,我们是有职业操守的。

SCM的发展和VCS的发展也能从一个侧面反映了现在软件开发的情况,社区的软件,一般都是很活跃的。SCM主要是公司来做,而VCS则是社区的最火。
从这些管理的角度来看,我还没有发现基于社区VCS做的SCM了,也许是我孤陋寡闻吧。

如果我自己管理开发团队,我会选择VCS/DVCS,工具可以是svn和bzr。为什么要使用DVCS,我会在以后解释的:)

当然了,广义上SCM还有一些变更管理,缺陷跟踪等等,在此我们便不再考虑了。

Posted in 程序设计.


0 Responses

Stay in touch with the conversation, subscribe to the RSS feed for comments on this post.



Some HTML is OK

or, reply to this post via trackback.