做软件项目开发的人员都熟悉版本控制,但一般都为在同一开发地点的版本控制,所有相关的开发人员在同一个地点做开发,用一个版本控制软件来Check
in 和Check out,达到版本控制的效果。但如果同时在几个不同的地方进行同一软件的开发,怎样来做版本控制?很少见到这方面的介绍,我就现在参与的一个项目的实际情况来介绍一下这方面的经验。
我公司是一个香港软件公司,在香港、北京和深圳各有一个开发中心,三地正在合作开发一个大型的香港金融软件项目,现在涉及到一个三地的版本控制和协同开发问题。首先由于客户在香港,整个系统的集成和整体测试(IAT)、用户测试(UAT)在香港开发中心来完成,那么北京和深圳开发的程序要汇总到香港来进行编译、集成,由于同一模块甚至同一程序在三地都可能同时修改,程序的Check
in和Check out一定要严格控制,否则版本的一致性将会失控。另外程序还分成IAT测试环境、UAT测试环境、生产系统三个版本,分别管理系统在各生命周期的程序。
为了到达此目标,我们公司自己开发了一个小的配置管理软件CMS(Configuration Management System)
用来进行版本控制。
首先各开发中心安装自己的版本控制软件VSS,在开发新功能或修改现有功能之前,从香港的版本控制部门通过邮件或FTP方式得到系统最新的源代码、配置文件,然后基于这个版本的进行程序开发。在进行单元测试正确后,要向版本控制中心进行程序提交,程序员通过HTTP方式登录香港版本控制中心的CMS系统进行登记。
程序开发人员在提交请求后,需要经过项目组长或主管的审批,审批人员在审批过程中主要检查申请单填写是否正确,是不是需要提交这些文件,文件路径、名称是否正确;版本控制人员根据这些提交申请来进行处理。
如果是新程序Check In for New,开发人员把新程序FTP或Email给版本控制人员,版本控制人员在收到新程序后,Check
In 到版本控制中心的VSS中;
如果是Check Out请求,版本控制人员把版本控制中心的VSS中相应的程序Check Out,并把这些程序发给开发人员,开发人员收到这些程序后,与自己修改过的程序相比较,合并自己改过的和这段时间其他人改过的地方成一个新版本;然后填写Check
In的申请单,把合并后的程序发送版本控制人员。
在当日所有相关开发人员的新增和修改的程序提交以后,版本控制中心就可以对系统进行编译了,测试人员就可以基于新的系统版本进行测试;如果编译过程中出现错误,一般是由于开发人员遗漏了某些程序的Check
in,或者在程序合并过程中出现混乱,造成其他人的修改过的地方被删除掉了。
系统在集成测试环境通过后,就可以提交给UAT环境了,UAT的提交一般为在香港开发中心的主管来决定,根据UAT的测试计划,提交相关的程序功能给客户进行测试,在填写UAT程序提交单之前,先用比较工具,比较Testing和UAT环境中程序的差异,记录需要更新到UAT的程序,填写程序到UAT环境的申请单,处理流程同IAT测试环境,只不过不需要提交程序,程序可以直接从Testing环境复制到UAT环境。
虽然这种Check In 和Check Out的方式比较烦琐,而且还有专门的版本控制人员来进行处理,但对版本控制提供了强有力的手段。希望能给遇到同样问题的软件项目管理人员提供参考。
|