欢迎来到天天文库
浏览记录
ID:53304450
大小:32.60 KB
页数:10页
时间:2020-04-03
《代码版本管理规范_v1.1.doc》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、XXXXXXXX代码版本管理规范历史版本版本号主要作者修改记录完成日期0.1XXX新建文档2015/12/160.20.30.4目录历史版本21引言41.1目的41.2管理工具42现状概述53现状分析53.1现状详述53.2目标细化63.3SVN版本管理63.3.1概述63.3.2使用对比74完整的实施方案94.1开发阶段94.2预发布测试阶段91引言1.1目的为了规范和制度化公司的软件版本管理制度,并保障项目开发资料的完整性和安全性,同时明确开发源代码的控制管理流程,特此制定此规范。1.2管理工具沿用
2、SVN管理工具来进行开发的版本管理,源代码管理和开发资料归档。1现状概述目前公司研发部门对于代码的版本管理方式较为简单,只是在每次发版后做了基线库存档,导致所有正在开发的需求和项目都在同一个目录里面进行修改,造成每次发版的代码都有可能包含了本次发版以外的内容。这样会造成如下两点影响:l会有不稳定的因素存在,比如:测试只会对当前需要发版的内容进行测试,但是代码库中同时存在多个版本和项目的代码,对于本次发版无涉及的代码没有进过测试就部署到了服务器上,影响运行的稳定性。l一旦出现点问题不好定位,比如:出现问题
3、后通常会优先排查发版涉及的内容,但是部分问题是由于其他项目代码引起的。因此,随着公司和项目规模的壮大,对软件代码版本管理提出了更高的要求。2现状分析2.1现状详述当前代码版本管理现状如下:1.所有的开发都在一个目录里面做,各种需求、项目、代码、文件混杂在一起。2.提交测试服务器时,只考虑了编译能通过,而没有考虑功能本身有没有完成。3.测试出bug以后,会在开发目录进行修改,然后再次提交到测试服务器。这时提交的代码就可能包含了他人对其他功能/项目的修改,而测试又只会针对此bug再做测试。这就导致了除了此b
4、ug之外的修改可能会没有测试过就直接发布到了服务器上,引起预发布环境不稳定并增加预发布bug数量。总体来说,当前工作流程是:预发布出bug,研发修改,再提交测试,然后预发布测试通过的代码。整个流程也较为复杂消耗了大量人力,从而间接的增大了研发成本。(参照下图)开发库测试服开发库测试服再提交预发布发现橙色bug提交开发库他人修改的代码修复Bug1.以上描述的过程还可能出现在正式环境上,导致更严重的后果。1.1目标细化结合第一章节提及的本文目标、SVN工具的能力以及之前工作中遇到的具体问题,将本规范的撰写目
5、标具体细化为:1.提交到测试服务器的代码只能包含本次需要测试的内容。2.发布到预发布环境的代码只能包含这次需要测试的内容。3.发布到正式环境的代码只能包含本次发版的内容。1.2SVN版本管理1.2.1概述为了达成上述我们设定的版本管理目标,在指定具体的策略之前,我们需要理解SVN的版本管理思路,这里简单将其阐述如下:首先,SVN(Subversion)有一个很标准的目录结构,如下:project +--trunk +--branches +--tags (此目录为只读)这个标准的目录结构在大多数的开源项
6、目中都能看到,这套标准目录结构为软件开发提供了一种非常好的宏观的版本库管理机制,特别是在产品类项目管理中。其中,trunk目录为主开发目录,branches目录为分支开发目录,tags目录为存档目录,也就是基线库。其各自含义描述如下:Trunk中文翻译为“主干”,在项目运作过程中,日常的开发和管理资料都在此目录中进行维护和更新。Branches中文意思为“分支”,在项目运作过程中,用于存放阶段性的成果或者版本,这些阶段性的成果或者版本必须是可维护的。同时,这里的开发成果物必须要保持每天一到两次把主干上的
7、内容合并过来。tags中文意思“标签”,此目录对一些阶段性的成果进行存档。此目录为只读目录,不允许进行修改。1.1.1使用对比以下假设一个开发场景,并设想当前管理机制和SVN管理思路下的不同流程和结果,以便更好的理解SVN管理思路和带来的收益。场景描述:设备管理模块,其v1.0已经上线,正在做v2.0的开发。在这时,研发在开发库中正在做v2.0的开发,同时备份有v1.0的代码,现在有一个紧急需求,需要在v2.0发版之前就应用到正式环境中去。1.1.1.1现有的发布流程1.在当前开发库(v2.0)的代码上
8、直接修改实现紧急需求。2.开发完成后,将本紧急需求连同v2.0的半成品代码(但编译能通过)一起打包提交到测试服务器。3.测试只针对此紧急需求进行测试(v2.0的内容不测试),并测试通过。4.发预发布环境,同时测试(过程同上)。5.发到正式服务器。1.1.1.2SVN的发布流程1.2.0开始开发,trunk目录下此时的代码内容为v2.0的开发版(半成品未完成)。2.基于v1.0的tag新建此紧急需求的开发分支(branchv1.1)此时的目录
此文档下载收益归作者所有