CVS(Concurrent Versions System),并发版本系统的意思,主流的开放源码网络透明的版本控制系统,用于在多人开发环境下的源码的维护。CVS对于从个人开发者到大型、分布团队都是有用的。下面介绍一下我的使用经验。
分支的使用
我们开发使用CVS一般在项目主干head上记录,然而有时我们为了保持版本源码相对稳定,或者为特殊的目的,需要构建分支,分别来管理控制,等源码都稳定下来,再进行分支的合并。可见建立分支的主要目的是得到一个相对稳定的阶段性版本。举个实际例子,我们开发的一个CRM项目,开始是在主干Head上开发源码,经过测试组测试基本稳定了,但仍存在未修复的bug,在发布预发布版本前为了保证程序的稳定性,我们在主干Head上又建立了2个分支:Debug分支、Release分支。Debug分支用于开发人员进行bug的修复、代码的修改、优化、新增需求功能;Release分支用于预发布或正式发布、上线前的测试、客户演示,可以将相对稳定的Debug分支与前一个Release分支(若没有就使用Debug分支)合并(Merge)的版本。这2个分支各有用途,可以独立进行互相不干扰,Head-Debug-Release,Debug是个中间版本,由于发布前发现的问题会比较多,作为发布前的缓冲、过渡、修复代码,保证Release的正常进行。开发中各分支版本打Tag会比较频繁,我们会制定了一些规范让开发人员在tag上记录解决修复问题的记录,如下:
![](static/image/hrline/line6.png)
=======此为merger到其他分支的tag模版信息==============================================
YYYY-M-D ←日期 merger人:某某某 ←提交人姓名
start t-debug-xxxx-before end t-debug-xxxx-after patch to release
↑此tag为merger代码的开始tag; ↑此tag为结束tag; ↑此为目标分支;
merger的文件列表:
例如:
cn\zwork\crm\mobile\biz\impl\MobileSystemBizImpl.java
WebRoot\script\appmanage\product.js
========以下为具体bug提交的信息=======================================================
提交人:xxx
解决的问题:oss在ip地址认证错误时,显示提示页面error.html
提交后tag:t-head-20120716-1016-after
提交前tag:t-head-20120716-1016-before
提交的文件列表:\WEB-INF\web.xml、\WebRoot\error.html
修改说明:web.xml增加Dispatcher分发器的路径匹配“<url-pattern>*.html</url-pattern>”
error.html为新增加的页面。
===============================================================================
2012-7-05
提交人:xxx
解决的问题:修改操作日志的操作时间不显示、操作日志进入页面初始查询当天的操作日志
提交后tag:t-debug-20120705-1710-after
提交前tag:t-debug-20120705-1710-before
提交的文件列表:logs-mapper.xml、logs-resultmap.xml、logsIndex.jsp
![](static/image/hrline/line6.png)
经过一段时间,Debug、Release基本稳定下来,bug不太多了,我们就可以进行一次阶段性分支总体合并,按如下步骤:1)将Debug分支的代码合并到Release分支上;2)Release分支的代码合并到Head主干上。这样Head、Debug、Release分支又进一步融合一致了,我们又可以在Head上进行开发了,开发一段过程,可能又会遇到上述状况(需要再次发布、版本升级),我们就可以再次按上述的分支建立、合并规则(可以参考,也许有更好的思路),循环往复地进行基于分支的开发管理。
开发时还要注意一点,分支的切换,最好能一个分支建立一个新的工程,比如head、debug、release分别建立一个工程,都与CVS同步。使用eclipse就比较方便做到了。如下:
进入eclipse cvsReporsitories,取得相应分支,使用check out as 另存为新的工程,就可以建立分支对应的工程项目了。不再多说了。
eclipse与CVS工具的结合使用
使用cvs库,如下
可以选择合适的分支进行查看、检出等操作。 在项目工程右击菜单中选择cvs相关菜单项,如下
其中Synchronize with Repository :同步cvs服务器与本地源码,可以执行提交、覆盖等同步操作; commit:提交当前源码文件或目录; update:下载服务器最新源码; Tag as Version:用于打版本标记Tag
Switch to Another Branch or Version...:切换当前工程为另一个分支或版本,如下图,选中后,工程将刷新到新的版本分支。
|