声明:本人非专业的软件配置管理人员,只是日常工作中经常使用,以下内容均代表个人观点,欢迎专业人士指正、补充。
What:什么是并行版本管理?
并行版本管理是软件配置管理(SCM)的一部分。软件配置管理(SCM)通俗来讲就是要控制与软件产品相关的文档资料、软件版本、变更文档以及软件运行的支持数据等等。并行版本管理主要工作是控制并行开发时的软件版本。
目前市场上并行管理软件最为常用的产品包括SVN、CVS和VSS。
在规模较大的软件公司或者互联网公司,都会有专门的岗位做这个事情。规模大一点的公司可能会设置配置管理部;规模小一点的有专人负责;规模再小一点的公司,不设岗位,开发人员兼任。
作为开发人员来讲,只要明白基本的原理以及日常使用就足够了,我看很多公司招聘的时候,把“是否会使用并行版本管理软件”作为聘用条件之一。其实这是很简单的一项技能,你花20分钟看完我的文章,你就足以应付,再配合一下实践工作就ok。
Why:为什么要使用并行版本管理呢?
我历来的观点:管理工具和管理手段的运用是为了减轻工作人员的负担而不是增加负担。如果仅仅为了管理的规范化,做一些表面文章,甚至于跟风,那么你的管理会是很失败的。为什么要实行版本管理呢?原因也很简单:它能够为研发人员的日常开发工作带来很大的便利。
实行版本管理到底会带来什么好处呢?
l 团队协作开发
本人对此深有体会,无论是在做C/S客户端软件还是开发B/S WEB开发,理论上,在一个项目组分工合理的情况下,团队成员应该各负其职,不会有工作上的重叠,但在实际工作中远远达不到这种理想情况。当项目达到集成阶段,是要把各个成员的开发结果捏合在一起,相互之间必然产生一定程度的耦合。任何一方的变动,都有可能影响他人的已经完成的工作。最常见的灾难就是代码互相覆盖。
l 分支版本开发
如果您公司从事的是项目开发,这个好处很有可能体会不到。因为项目开发一般到最终验收就结束了,以后基本上常规性的维护工作,不会有太多的版本发布。
如果您公司从事的是产品开发,那么这个好处就非常明显。您所开发的产品无论是自行运营销售还是代人开发,都会存在版本升级的问题。
通常,您的版本管理库中会包含3部分内容:主干开发版、枝干开发版和发布版。
主干开发版:继续开发的版本,版本号一直在增长,比如做完了Version1.0,继续做Version2.0,这个分支就是主干主干开发版。
枝干开发版:正在维护的版本。您除了进一步开发之外,以前的多个版本可能需要继续维护,这些版本就是枝干开发版。
发布版:已经发布的产品或在生产环境中运营的版本。这个版本是静态版本,它作为项目的一个里程碑进行了固化,不再允许改动。最终用户只能从发布版中获取所需要的产品。
l 错误版本回滚
新版本发布之后,即使这个通过了最为严密的验收测试,依然可能存在着重大缺陷。一旦出现这种情况,整个产品就必须下线,进行版本回退。这种情况还真不少见,我反正就在以前的公司都碰到过。这种情况是灾难性的,损失不可避免,采用错误版本回滚的方式,至少可以提供一定程度的补救。
l 历史修改记录
通过版本管理系统,你能够很方便地查阅项目的演变历史,获取任意时间的相关资料。有的领导也拿这个作为人员工作量考核的依据。
Where:什么样的场合需要使用并行版本管理呢?
如果您的公司规模很小,每个项目的开发人员就那么一两个,项目也不复杂,我倒觉得没必要引进配置管理的工作了,白白增加工作量。开发人员将文档、源代码和发行版本直接存放到一台文件服务器上,或者直接存放在开发人员的机器上都可以。既节约资源,又省去管理成本,何乐而不为。
如果一个项目会发生经常性的变动,比如修复bug,升级版本等,或者多个版本同时并行开发,我觉得你还是应该实行版本管理。另外,如果你的公司可能有较多的项目,需要将项目成果保留一段时间的话,实行版本管理也是个不错的选择。
以上基本能够讲清楚并行版本管理的有关知识,目前开发人员都选择什么的并行管理软件呢?各个软件到底有什么优缺点呢?我将结合个人的经历与大家共享。