[键入文字]欣网视讯|天智互联软件源代码版本管理与发布版本:1.0日期:2010-9-9文件编号:XWQMS-CM-TEM-01版本号:1.1软件源代码版本管理与发布欣网视讯|天智互联第2页共13页修订记录日期版次描述作者审核批准2010-9-91.0初版发布赵渊博软件源代码版本管理与发布欣网视讯|天智互联第3页共13页目录修订记录...........................................................................................................................................21.引言...........................................................................................................................................41.1.目的...........................................................................................................................41.2.术语...........................................................................................................................41.3.参考资料...................................................................................................................52.软件版本管理...........................................................................................................................52.1.版本阶段说明...........................................................................................................52.2.版本命名规范...........................................................................................................52.3.版本号修改规则.......................................................................................................52.4.SVN版本库分支与合并策略..................................................................................62.4.1.版本库管理说明...............................................................................................62.4.2.版本库操作说明...............................................................................................62.4.3.各种源码变动时,版本库操作方案...............................................................72.4.4.版本库发布模式...............................................................................................92.5.版本号发布.............................................................................................................132.5.1.版本发布追踪表.............................................................................................13软件源代码版本管理与发布欣网视讯|天智互联第4页共13页1.引言1.1.目的该文档是配置管理计划的一部分,主要用于源代码版本管理与发布。也可用于项目配置管理与发布。该文档使项目组成员熟悉并按文档约定执行版本管理与发布。该文档列举在开发过程中会出现的开发情况,规范在开发过程中分支的类型,何时分支、何时合并。该文档根据实际项目操作实践处于不断完善中。应该此方案最基本的前提是需要熟悉SVN客户端操作。1.2.术语名称解释备注SvnSubversion的缩写,版本控制管理工具TsvntortoiseSVN的缩写,版本控制管理工具的客户端修订版本(revision)每一次提交修改到版本库,就会使版本库进入一个新的状态,称之为修订版本。每一个修订版本都会被赋予一个唯一的,比前一个修订版本号大一的自然数。一个新建立的版本库的修订版号为0,其中除了空的根目录外,什么都没有。版本库(Repository)存放修订版的数据库本地工作拷贝(Localworkingcopy)修订版在本地的副本版本的检入(Checkin)本地副本提交到服务器的版本库检出(Checkout)从服务器的版本库中取出修订版成为本地副本标签(Tags)为某一日期的版本加一个名字,便于检出或发布软件源代码版本管理与发布欣网视讯|天智互联第5页共13页分支(Branches)修订版打分支,以后可以平行修改,互不干扰合并(Merging)将分支的修订版合并为一个新的修订版冲突(Conflict)并发版本控制时防止修订版混乱的错误机制1.3.参考资料《VersionControlwithSubversion》《SMOP文档格式定义规范》2.软件版本管理2.1.版本阶段说明*Alpha版:此版本表示该软件在此阶段主要是以实现软件功能为主,通常只在软件开发者内部交流,一般而言,该版本软件的Bug较多,需要继续修改。*Beta版:该版本相对于α版已有了很大的改进,消除了严重的错误,但还是存在着一些缺陷,需要经过多次测试来进一步消除,此版本主要的修改对像是软件的UI。*RC版:该版本已经相当成熟了,基本上不存在导致错误的BUG,与即将发行的正式版相差无几。*Release版:该版本意味“最终版本”,在前面版本的一系列测试版之后,终归会有一个正式版本,是最终交付用户使用的一个版本。该版本有时也称为标准版。一般情况下,Release不会以单词形式出现在软件封面上,取而代之的是符号(R)。2.2.版本命名规范软件版本号由四部分组成,第一个1为主版本号,第二个1为子版本号,第三个1为阶段版本号,第四部分为日期版本号+希腊字母版本号+SVN最后修订版本号,希腊字母版本号共有5种,分别为:base、alpha、beta、RC、release。例如:1.1.1.20100409_beta_334。2.3.版本号修改规则主版本号(1):当功能模块有较大的变动,比如增加多个模块或者整体架构发生变化。此版本号由项目经理和技术主管决定是否修改。软件源代码版本管理与发布欣网视讯|天智互联第6页共13页*子版本号(1):当功能有一定的增加或变化,比如增加了对权限控制、增加自定义视图等功能。此版本号由项目经理和技术主管决定是否修改。*阶段版本号(1):一般是Bug修复或是一些小的变动,要经常发布修订版,时间间隔不限,修复一个严重的bug即可发布一个修订版。此版本号由技术主管决定是否修改。*日期版本号(20100409):用于记录修改项目的当前日期,每天对项目的修改都需要更改日期版本号。此版本号由开发人员决定是否修改。*希腊字母版本号+SVN最后修订版本号(beta_334):此版本号用于标注当前版本的软件处于哪个开发阶段,当软件进入到另一个阶段时需要修改此版本号。此版本号由项目决定是否修改。2.4.SVN版本库分支与合并策略2.4.1.版本库管理说明源代码版本管理采用主干和分支的开发模式,建立分支必然会涉及到合并,如果要使用主干分支方案就必须接受合并可能带来的操作繁复。源代码的变动主要有几种:1、建立新项目2、修改bug3、根据新需求增加新功能4、项目技术方案重大变革、升级下面分别对以上几种变动的操作方案加以说明,当然实际操作中并不局限于下面所描述的方案,做为一种建议方案,仅希望提供给大家一种管理思路。2.4.2.版本库操作说明分支的合并类型合并的工作是把主干或者分支上合并范围内的所有改动列出,并对比当前工作副本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合并范围是主干上的改动,并且一定要注意,合并的起始位置URL一定要和当前的工作副本的URL是相同的。一、合并一个范围的版本此类型应用最为广泛,主要是把分支中的修改合并到主干上来。在主干上点击右键选择合并,然后选择合并类型:合并一个范围的版本。合并的源URL填写的是要合并的分支的URL,待合并的版本范围如果为空,则指的是合并分支上所有的版本,即自从分支创建以来到分支当前最新版本的所有演变。如果只是选择其中一个版本,或者几个版本,那么就表示只是将制定的n个版本的变化合并到主干上。如果只是选择其中一个版本,那么表示只是选择那个版本的修改,之前或之后的修改将不被采纳。二、复兴合并复兴合并可以理解为是第一种合并类型的一种特例,在复兴合并中,主干可以理解为是自从软件源代码版本管理与发布欣网视讯|天智互联第7页共13页开创分支之后没有任何修改,而分支是经过修改的,而且合并中分支是没有版本选择的。经过复兴合并,分支中所有的修改都会合并到主干中,合并的结果将使得分支和主干一模一样,从而可以删除分支。三、合并两个不同的树此类型与前两种类型不同,第一种类型可以选择分支合并的版本,主干不能选择版本;第二种类型是主干和分支都不能选择合并的版本;而这种类型则是无论是主干还是分支都可以选择合并的版本,即可以选择过去的一个主干版本与分支的某个版本进行合并。合并的时候以选择的分支版本为主,如果选择的主干版本与分支版本有不同的地方,合并时主干部分将被放弃。起始URL:选择主干目录的URL(应当和当前工作副本的URL一致,这个是所谓的合并点)结束URL:选择要合并的分支的URL。起始和结束的版本:一般起始版本应当找到最后一次同步时的版本,如果从没有同步过(第一次合并),则选择创建分支时的版本,结束版本一般是最新版本,如果你不想将某些内容合并进主干的话,也可以选择一个合并点。2.4.3.各种源码变动时,版本库操作方案2.4.3.1.建立新项目的操作方案通常建立一个新项目时,配置管理人员会根据CMMI规范给我们建立一套完整的项目配置库,类似下图接下来,我们在源代码目录下建立2个子目录branchs和trunk,类似下图Trunk目录代表源代码主干,在主干上的代码通常是经过测试、功能稳定、可以随时发布的项目代码Branchs目录代表分支,通常用于功能修改对于新建立的项目,一般会由1人或多人搭建项目代码框架。由多人搭建项目代码框架时,每个人分别在branch