版本控制流程版本控制流程第2页共8页目录1.概述.........................................................................................................................................................31.1.目标.................................................................................................................................................31.2.版本控制系统工具.........................................................................................................................31.3.SVN特点简述.................................................................................................................................52.SVN版本控制........................................................................................................................................62.1.版本控制目录设置.........................................................................................................................62.2.角色及权限分配.............................................................................................................................72.3.操作流程.........................................................................................................................................72.4.SVN备份计划.................................................................................................................................82.5.SVN操作注意事项.........................................................................................................................8版本控制流程第3页共8页1.概述1.1.目标保证各个环境(产品、开发、测试、主干)的独立,避免相互影响。减少最终发布时合并主干出现冲突的概率。降低冲突处理的难度。1.2.版本控制系统工具版本管理器:SVN安装包服务器端安装后界面版本控制流程第4页共8页比较工具:BeyondCompare图形界面如下:可以进行文件夹比较,文件内容比较等、也可以对文本文件内容,时间等进行比较。比较结果如图:可以针对比较结果进行自动移动或复制让两侧文件一致。版本控制流程第5页共8页1.3.SVN特点简述统一的版本号。CVS是对每个文件顺序编排版本号,在某一时间各文件的版本号各不相同。而Subversion下,任何一次提交都会对所有文件增加到同一个新版本号,即使是提交并不涉及的文件。所以,各文件在某任意时间的版本号是相同的。版本号相同的文件构成软件的一个版本。原子提交。一次提交不管是单个还是多个文件,都是作为一个整体提交的。在这当中发生的意外例如传输中断,不会引起数据库的不完整和数据损坏。重命名、复制、删除文件等动作都保存在版本历史记录当中。对于二进制文件,使用了节省空间的保存方法。(简单的理解,就是只保存和上一版本不同之处)。目录也有版本历史。整个目录树可以被移动或者复制,操作很简单,而且能够保留全部版本记录。分支的开销非常小。优化过的数据库访问,使得一些操作不必访问数据库就可以做到。这样减少了很多不必要的和数据库主机之间的网络流量。支持元数据(Metadata)管理。每个目录或文件都可以定义属性(Property),它是一些隐藏的键值对,用户可以自定义属性内容,而且属性和文件内容一样在版本控制范围内。支持FSFS和BerkeleyDB两种资料库格式版本控制流程第6页共8页2.SVN版本控制2.1.版本控制目录设置为了将开发中和最后的成果进行独立管理,并有助于后续工作时,不产生冲突而建立以下的目录结构形式,如下,【产品库】是存放正式发布或上线后的项目相关文档及代码,【开发库】是存放开发过程中项目相关的资料及代码。版本控制流程第7页共8页2.2.角色及权限分配※字母说明r:读取权限w:修改写入角色描述权限配置管理员:公司所有项目的所属文件代码j进行管理。只管理产品库产品库:rw开发库:r项目经理某一个项目的负责人产品库:r负责项目的开发库:rw开发人员项目的开发工作人员产品库:r相关目录:rw美工人员项目的前端设计人员产品库:r相关目录:rw测试人员项目的测试质量保证人员产品库:r相关目录:rw项目内配置管理员(或项目经理负责)如果项目是团队化合作,并有多人开发,代码交叉比较多,并且共通代码修改较多,可以添加内部的配置管理员对整体代码管理,避免代码交叉修改,无法上传,保证代码最新及统一的功能。产品库:r负责项目的开发库:rw2.3.操作流程1)开发中的流程版本控制流程第8页共8页2)上线后维护流程或者二期三期产品开发流程3)分支合并操作项目开发编码前从当前主干建立一条开发分支,供项目开发人员使用;开发结束,提交测试的时候,从当前主干建立一条测试分支,将开发分支合并到测试分支上,供测试人员进行测试。这样开发人员对开发分支的修改不会影响测试环境;bugfix的时候我们定时将开发分支的修改合并到测试环境中。回归测试的时候,从当前主干建议一条发布分支,将测试分支合并到该发布分支上,在发布分支上进行回归测试。发布前,将发布分支合并到当前主干。2.4.SVN备份计划SVN控制的版本,每天晚上自动打包备份到****环境中,同时也备份到另外一台windows服务器中;定期清理,删除老的备份(一个月前的备份)。2.5.SVN操作注意事项1、多人开发的项目开发人员必须每日早上到开发库更新代码,下班前提交当日代码。2、单人开发的项目开发人员代码更新周期由项目经理制定,但周期不得大于一周。3、测试时,必须从SVN取得最新代码到测试环境测试,如果编译部分不太方便,开发人员用比较工具比较SVN代码和本地代码一致时,方可采用本地代码生成的war包或者编译后文件进行测试。