收藏 分销(赏)

版本管理标准规范.doc

上传人:精*** 文档编号:2767647 上传时间:2024-06-05 格式:DOC 页数:31 大小:215.54KB
下载 相关 举报
版本管理标准规范.doc_第1页
第1页 / 共31页
版本管理标准规范.doc_第2页
第2页 / 共31页
版本管理标准规范.doc_第3页
第3页 / 共31页
版本管理标准规范.doc_第4页
第4页 / 共31页
版本管理标准规范.doc_第5页
第5页 / 共31页
点击查看更多>>
资源描述

1、通联支付网络服务股份有限公司技术支持中心研发部版本管理规范受理市场支持部1月版本控制信息版本日期拟稿和修改阐明1.0-12-6刘志毅拟稿发布1.1-1-7刘志毅增长了邮件告知1.2-1-25刘志毅重新编写了管理规范1.3-1-28沈德权补充了邮件告知接受方和上线版本编译流程详见2.3、2.4和3.2.1章节1.4-2-16刘志毅补充了紧急变更方案,详见3.2.1目录文档类别使用对象41引言41.1目41.2范畴41.3术语定义42版本管理621版本标记办法6211版本标记阐明622目录构造623版本存储72.3.1 trunk72.3.2 branches72.3.3 tags72.3.4 f

2、iles72.3.5 script72.3.6 sql824权限控制管理83更新管理(版本升级)83.1版本升级原则83.2 新版本发布83.2.1 版本管理流程阐明83.2.2 版本管理简略流程图93.2.3 角色定位阐明93.2.4 版本管理守则104备份管理105SVN惯用命令阐明10文档类别使用对象文档类别该文档是为技术支持中心提供一种版本管理规范性文献。使用对象该文档使用对象为技术支持中心研发部版本管理人员,以及其她有关人员。未经允许,该文档不得提供应上述规定对象以外人员阅读或使用。1引言1.1目本文档是为规范技术支持中心研发版本管理而制定。1.2范畴本文档为研发部各人员提供关于版本

3、管理规范有关内容,涉及:1. l版本标记办法2. l版本管理流程3. l角色定位4. lSVN惯用命令阐明1.3术语定义SVNSvn是一种开源版本控制系统Subversion简称文档上线所需有关文档,涉及布置手册,源码修改清单列表等脚本上线所需有关脚本,涉及编译脚本等SQL语句上线所需有关SQL语句,涉及建表语句等配备管理标记和拟定系统中配备项过程,在系统整个生存周期内控制这些项投放和更动,记录并报告配备状态和更动规定,验证配备项完整性和对的性。软件配备软件详细形态在某时刻瞬时影像。配备项软件配备管理对象称为配备项,如:源码。基线软件生存周期中各开发阶段末尾标记,它作用是把各阶段工作划分更加明

4、确化,使本来持续工作在这些点上断开,使之便于检查和必定阶段成果。邮件服务需求转达,标签转达时候,需要发送邮件告知对方或者回答对方版本控制通过svn co把分支文献夹拷贝到开发环境进行开发,并进行版本控制版本管理依照需求,创立开发所需分支标签管理为测试版本,上线版本创立标签版本更新通过svn ci定期备份修改内容,或通过svn update更新当前所开发源码,或通过svn merge把主干新增内容更新至分支版本测试通过svn export校验源码,进行源码比对,测试版本修复对当前测试或上线版本浮现问题进行修复版本冲突由于修改了同一种文献,因此svn ci,svn merge以及svn up时会报

5、错,导致了版本冲突问题。2版本管理21版本标记办法为了使工作规范化、统一化,各系统实行版本标记管理办法分为:上线版本,测试版本,修复版本,文档版本,脚本版本以及sql语句版本。211版本标记阐明上线版本:在生产环境上运营正式版本。测试版本:在UAT环境上运营测试版本。修复版本:在生产环境上用于修复当前版本补丁版本。 以“acc”开头,版本号放后。版本号分2节:主版本号为上线时间点,由3节构成,每节之间以小数点(.)间隔。如acc_11.01.26表达主版本号为11.01.06,上线时间为1月26日,次版本号为修复版和测试版本组合,例如acc_11.01.26_patch1,主版本为11.01.

6、26,次版本号为patch1,阐明该版本为1次修复版本,如acc_11.01.26_test1,阐明该版本为1次测试版本,如acc_11.01.26_patch1_test1,阐明该版本为1次修复版本1次测试版本。文档版本:上线版本相应有关文档。以“file”开头,版本号放后。就一种主版本号,为上线时间点,如file_11.01.26,指文档为上线版本11.01.26文档。注:文档名必要是英文+数字构成,暂不支持中文名脚本版本:上线版本相应有关脚本。以”spt”为开头,版本号放后,就一种主版本号,为上线时间点,如spt_11.01.26,指脚本为上线版本11.01.26脚本sql语句版本:上线

7、版本相应sql语句。以“sql”为开头,版本号放后。就一种主版本号,为上线时间点,如sql_11.01.26,指sql语句为上线版本11.01.26sql语句。22目录构造现以其中一种库名录录构造举例如下:23目录阐明以子系统类别为主目录(即库名)。库名子系统阐明apsbmAPSBMapsbat清分清算apsms商户服务平台商户服务平台apsrisk_backAPSRisk_Back风险管理系统(后台)apsonlTGPnspNSPtpospTPOSPcommfe通讯前置alipay支付宝前置bank银行前置apsrptAPSRPT记录报表pospPOSPtest测试使用apmsAPMS商户管

8、理系统当前暂不采用SVN管理apsrisk_frontAPSRisk_Front风险管理系统(前端).NET当前暂不采用SVN管理2.3.1 trunk主干文献夹,存储是当前系统最新源码2.3.2 branches分支文献夹,存储是当前开发和历史开发分支文献夹源码。2.3.3 tags标签文献夹,存储是当前上线版本和历史版本源码。2.3.4 files 文档文献夹,存储是当前上线版本和历史版本有关文档。2.3.5 script脚本文献夹,存储是当前上线版本和历史版本有关脚本。2.3.6 sqlsql语句文献夹,存储是当前上线版本和历史版本有关sql语句。24权限控制管理为保障版本安全性,一致性

9、,以及防止意外修改,必要对不同文献夹设立不同访问权限。文献夹权限类别:只读权限,读写权限。顾客类别:开发人员、测试人员、配备管理员、QA、项目经理等。为了控制不同使用权限,依照规定在服务器上分别建立不同顾客,针对不同配备项所在目录分派不同权限。为了便于管理,应以表格形式列出人员与管理对象访问关系(顾客权限清单)。3更新管理(版本升级)3.1版本升级原则版本升级应严格纳入版本管理控制之下。应当谨慎地控制版本升级,保障高版本向下兼容性,或提供严格定义升级办法。在下面几种状况下,进行版本演化和升级:1. 当系统有重大需求,需要较大改进或修改时,主版本号为新版本上线时间点。2. 当系统有重大BUG问题

10、时,次版本要添加patch1。3. 对于改动量比较少,如修复小问题之类,可以从当前正在开发分支支中,进行改进或修改,和下一种新版本一起上线。4. 记录版本升级过程。每次版本升级,都要填写版本升级登记表。3.2 新版本发布3.2.1 版本管理流程阐明1. 需求和上线点确认后,开发人员以邮件告知版本管理员,邮件内容包括如下要素:上线点时间,开发系统,开发内容等。版本管理员依照上线点,在相应版本库下创立分支文献夹,并以邮件回答给开发人员。 2. 开发人员依照版本管理员提供分支文献名从版本库分支文献夹内checkout到开发服务器建立版本控制,进行程序开发。3. 开发人员开发完毕后,把分支文献夹提交到

11、版本库,然后从版本库中checkout出主干工作拷贝,并把版本库中最新分支文献合并至主干工作拷贝,合并完毕后,进行diff比对,确认没问题后,最后把主干工作拷贝提交至版本库。4. 开发人员以邮件告知版本管理员,告知当前开发分支已经完毕,并已更新至主干中,同步邮件内容必要具有:布置手册,源码修改清单等有关文档,编译脚本,SQL语句。版本管理员把当前主干版本创立标签文献夹,记录当前测试版本,以邮件回答给环境管理员、测试人员、开发人员、QA和项目经理,并附带有关文献。5. 环境管理员依照版本管理员提供测试标签export至测试服务器进行版本测试,依照布置手册,源码修改清单等文档对源码比对,布置完毕后

12、,告知测试人员做功能测试等。6. 测试完毕,测试人员以邮件告知版本管理员,版本管理员把测试标签创立为上线标签,以邮件回答给开发人员、测试人员、环境管理员、QA和项目经理,并附带有关文献,准备上线。7. 核心系统:开发人员用上线标签源码进行编译后,再针对上线内容进行测 试,通过后,提交上线包,有关文档给运营部上线。管理系统:开发人员,提交测试通过上线包,有关文档给运营部上线。(序号相应如下版本管理流程图)8. 测试未通过,开发人员对代码进行二次开发,待开发完毕后,重复以上环节4-7,直至上线紧急变更方案触发条件:下一种上线版本已经并入了主干,需要在下一种上线版本前插入一种补丁版本。1. 变更需求

13、和上线点确认后,开发人员以邮件告知版本管理员,邮件内容包括如下要素:上线点时间,开发系统,开发内容等。版本管理员依照上线点,在相应版本库下创立分支文献夹(分支名为acc_xx.xx.xx_patch1),并以邮件回答给开发人员。2. 开发人员依照版本管理员提供分支文献名从版本库分支文献夹内checkout到开发服务器建立版本控制,进行程序开发。3. 开发人员开发完毕后,把分支文献夹提交到版本库,以邮件告知版本管理员,告知当前开发分支已经完毕,同步邮件内容必要具有:布置手册,源码修改清单等有关文档,编译脚本,SQL语句。版本管理员把分支版本创立标签文献夹,记录当前测试版本(测试标签:acc_xx

14、.xx.xx_patch1_test1),以邮件回答给环境管理员、测试人员、开发人员、QA和项目经理,并附带有关文献。4. 环境管理员依照版本管理员提供测试标签export至测试服务器进行版本测试,依照布置手册,源码修改清单等文档对源码比对,布置完毕后,告知测试人员做功能测试等。5. 测试完毕,测试人员以邮件告知版本管理员,版本管理员把测试标签创立为上线标签,以邮件回答给开发人员、测试人员、环境管理员、QA和项目经理,并附带有关文献,准备上线。6. 上线成功后,开发人员把紧急修复分支(acc_xx.xx.xx_patch1)合并入下一种上线版本分支内,合并后无任何冲突,再提交到版本库,然后从版

15、本库中checkout出主干工作拷贝,并把版本库中最新分支文献合并至主干工作拷贝,合并完毕后,进行diff比对,确认没问题后,最后把主干工作拷贝提交至版本库。7. 重复以上环节4-7,直至上线3.2.2 版本管理简略流程图3.2.3 角色定位阐明开发人员需要做:邮件服务,版本控制,配备项,文档,脚本,SQL语句,版本更新,版本修复,版本冲突测试人员需要做:邮件服务,版本编译,版本测试版本管理人员需要做:邮件服务,配备管理,基线,版本管理,标签管理3.2.4 开发守则u 请开发人员严格执行规范中制定版本管理流程。u 上线前,必要准备好相应文档,脚本,SQL语句,以便测试人员进行对的测试。u 在源

16、码开发中修改或者改进地方,必要增长注释某些,以便测试人员进行对的校验u 在多人对同一种分支开发时,需要做好定期check in,以保证源码无冲突u 分支完毕单元测试,进行集成测试时,才可合并入主干,如果要自己做集成测试,则可以把主干合并入分支进行测试。u 在各种分支开发状况下,后上线分支必要等前上线分支合并入主干后测试通过了,再可并入主干u 后上线分支必要定期从主干合并入分支文献夹,以保证当前开发源码是以最新上线包基本上开发。u 在本地工作拷贝中合并入主干后,再用其与版本库主干进行源码比对,保证没有任何问题之后,再check in到版本库中。4备份管理为了保证文档最大可恢复性,要随时及定期地进

17、行备份工作。1、 随时备份:(1) 开发人员每天都要将自已当天修改源文献在本地机器上进行备份。(2) 开发负责人每天要将所有源文献在本地机备份。(3) 建议备份采用循环备份。2、 定期备份(1) 备份形式为硬盘备份和光盘备份。硬盘备份时,要备份在独立硬盘上;光盘备份时,要将光盘存储在可靠地方。(2) 备份周期视各系统详细状况而定。如果处在开发阶段,每周应对所有源程序项进行备份,普通为每周周五;如果处在其他阶段,依照详细状况而定,但周期不能超过两周。(3) 备份要由版本管理员负责,备份原则应是保证文档最大可恢复性。(4) 对于历史版本或某顾客特殊版本,如果无特殊因素不再进行修改话,建议用光盘进行

18、备份,并且应有备份盘阐明文献BACKUP.TXT。该文献应当记录如下内容:本次备份时间,备份内容,执行人。5SVN惯用命令阐明svn checkout命令简写svn co概要svn checkout URLREV. PATH描述从版本库取出一种工作拷贝。变化创立一种工作拷贝。选项:-revision (-r) REV-quiet (-q)-depth ARG-force-accept ARG-username USER-password PASS-no-auth-cache-non-interactive-ignore-externals-config-dir DIR用途:版本控制例子:$ s

19、vn co svn:/192.168.1.29/apsbat/branches/acc_11.01.26A acc_11.01.26/aA acc_11.01.26/bA acc_11.01.26/cA acc_11.01.26/dChecked out revision 20.$ lsacc_11.01.26svn commit命令简写svn ci概要svn commit PATH.描述将修改从工作拷贝发送到版本库。变化工作拷贝,版本库选项:-message (-m) TEXT-file (-F) FILE-quiet (-q)-no-unlock-non-recursive (-N)-ta

20、rgets FILENAME-force-log-username USER-password PASS-no-auth-cache-non-interactive-encoding ENC-config-dir DIR用途:版本更新例子:$ svn ci m “备注信息” Sending e.dll(修改文献)Transmitting file data.Committed revision 21.svn update命令简写svn up概要svn update PATH.描述会把版本库修改带到工作拷贝,如果没有给定修订版本,它会把你工作拷贝更新到HEAD修订版本,否则,它会把工作拷贝更新到

21、你用-revision指定修订版本。为了保持同步,svn update也会删除所有在工作拷贝发现无效锁定对于每一种更新项目开头均有一种表达所做动作字符,这些字符有下面意思:A添加D删除U更新C冲突G合并第一列字符反映文献自身更新,而第二列会反映文献属性更新。变化工作拷贝2选项:-revision (-r) REV-non-recursive (-N)-quiet (-q)-no-ignore-incremental-diff3-cmd CMD-username USER-password PASS-no-auth-cache-non-interactive-config-dir DIR-ign

22、ore-externals用途:版本更新例子:$ svn upA acc_01.11.26/f.txtA acc_01.11.26/g.txtD acc_01.11.26/a.txtUpdated to revision 22.svn merge命令简写svn merge概要svn merge sourceURL1N sourceURL2M WCPATHsvn merge sourceWCPATH1N sourceWCPATH2M WCPATHsvn merge -r N:M SOURCEREV WCPATH(最惯用)描述第一种和第二种形式里,源途径(第一种是URL,第二种是工作拷贝途径)用修

23、订版本号N和M指定,这是要比较两组源文献,如果省略修订版本号,缺省是HEAD。 第三种形式,SOURCE可以是URL或者工作拷贝项目,与之相应URL会被使用。在修订版本号N和MURL定义了要比较两组源。WCPATH是接受变化工作拷贝途径,如果省略WCPATH,会假定缺省值“.”,除非源有相似基本名称与“.”中某一文献名字匹配:在这种状况下,区别会应用到那个文献。 不像svn diff,合并操作在执行时会考虑文献祖先,当你从一种分支合并到另一种分支,而这两个分支有各自重命名文献时,这一点会非常重要。 变化工作拷贝选项:-revision (-r) REV-non-recursive (-N)-q

24、uiet (-q)-force-dry-run-diff3-cmd CMD-ignore-ancestry-username USER-password PASS-no-auth-cache-non-interactive-config-dir DIR用途:版本更新例子:将一种分支合并回主干(假定你有一份主干工作拷贝,分支在修订版本250创立):$ svn co svn:/192.168.1.29/apsbat/trunk(一方面建立主干工作拷贝)$cd trunk$ svn merge -r 250:255 svn:/192.168.1.29/apsbat/branches/acc_11.0

25、1.26(比较acc_11.01.26250版本和255版本之间差别,应用到主干工作拷贝中)U trunk/tiny.txtU trunk /thhgttg.txtU trunk /win.txt如果你分支在修订版本23,你但愿将主干修改合并到分支,你可以在你工作拷贝分支上这样做: $ svn merge -r 23:30 svn:/192.168.1.29/apsbat/trunk/U acc_11.01.26/win.txtsvn resolved命令简写svn resolved概要svn resolved PATH. 描述删除工作拷贝文献或目录“conflicted”状态。这个程序不是语

26、义上变化冲突标志,它只是删除冲突有关人造文献,从而重新容许提交;也就是说,它告诉Subversion冲突已经“解决了”。变化工作拷贝选项:-targets FILENAME-recursive (-R)-quiet (-q)-config-dir DIR用途:版本冲突例子:如果你在更新时得到冲突,你工作拷贝会产生三个新文献:$ svn updateC foo.cUpdated to revision 31.$ lsfoo.cfoo.c.minefoo.c.r30foo.c.r31C表达冲突,阐明服务器上改动同你改动冲突了,你需要自己手工去解决。如果你遇到冲突,三件事你可以选取: “手动”合并冲

27、突文本(检查和修改文献中冲突标志)。 用某一种暂时文献覆盖你工作文献。 运营svn revert 来放弃所有修改。当你解决了foo.c冲突,并且准备提交,运营svn resolved让你工作拷贝懂得你已经完毕了所有事情。简朴简介下手工合并冲突:这里一种简朴例子,由于不良交流,你和同事ttl,同步编辑了sandwich.txt。ttl提交了修改,当你准备更新你版本,冲突发生了,咱们不得不去修改sandwich.txt来解决这个问题。一方面,看一下这个文献:$ cat sandwich.txtTop piece of breadMayonnaiseLettuceTomatoProvolone .r

28、2Creole MustardBottom piece of bread不大于号、等于号和不不大于号串是冲突标记,并不是冲突数据,你一定要拟定这些内容在下次提交之前得到删除,前两组标志中间内容是你在冲突区所做修改: .r2普通你并不但愿只是删除冲突标志和ttl修改当她收到三明治时,会非常吃惊。因此你应当走到她办公室或是拿起电话告诉ttl,你没办法从从意大利熟食店得到想要泡菜。一旦你们确认了提交内容后,修改文献并且删除冲突标志。Top piece of breadMayonnaiseLettuceTomatoProvoloneSalamiMortadellaProsciuttoCreole Mu

29、stardBottom piece of bread当前运营svn resolved,你已经准备好提交了:$ svn resolved sandwich.txt$ svn commit -m Go ahead and use my sandwich,discarding ttls edits.记住,如果你修改冲突时感到混乱,你可以参照subversion生成三个文献涉及你未作更新文献。你也可以使用第三方合并工具检查这三个文献。 svn export命令简写svn export概要svn export -r REV URLPEGREV PATHsvn export -r REV PATH1PEG

30、REV PATH2描述第一种从版本库导出干净工作目录树形式是指定URL,如果指定了修订版本REV,会导出相应版本,如果没有指定修订版本,则会导出HEAD,导出到PATH。如果省略PATH,URL最后一某些会作为本地目录名字。从工作拷贝导出干净目录树第二种形式是指定PATH1到PATH2,所有本地修改将会保存,但是不再版本控制下文献不会拷贝。变化本地磁盘选项:-revision (-r) REV-quiet (-q)-force-username USER-password PASS-no-auth-cache-non-interactive-non-recursive-config-dir D

31、IR-native-eol EOL-ignore-externals用途:版本测试例子:从版本库导出目录(打印所有文献和目录):$ svn export svn:/192.168.1.29/apsbat/tags/acc_11.01.26A acc_11.01.26/testA acc_11.01.26/quizExported revision 15.svn log命令简写svn log概要svn log PATHsvn log URL PATH.描述缺省目的是你当前目录途径,如果没有提供参数,svn log会显示当前目录下所有文献和目录日记信息,你可以通过指定途径来精炼成果,一种或各种修订

32、版本,或者是任何两个组合。对于本地途径缺省修订版本范畴BASE:1。 如果你只是指定一种URL,就会打印这个URL上所有日记信息,如果添加某些途径,只有这条途径下URL信息会被打印,URL缺省修订版本范畴是HEAD:1。变化无选项:-revision (-r) REV-quiet (-q)-verbose (-v)-targets FILENAME-stop-on-copy-incremental-limit NUM-xml-username USER-password PASS-no-auth-cache-non-interactive-config-dir DIR用途:查看版本信息,做合并

33、参照例子:$ svn log-r20 | harry | -01-17 22:56:19 -0600 (Fri,17 Jan ) | 1 lineTweak.(-m备注信息)-r17 | sally | -01-16 23:21:19 -0600 (Thu,16 Jan ) | 2 linessvn list命令简写svn ls概要svn list TARGETREV.描述列出每一种TARGET文献和TARGET目录内容,如果TARGET是工作拷贝途径,会使用相应版本库URL。 缺省TARGET是“.”,意味着当前工作拷贝版本库URL。变化无选项:-revision (-r) REV-verb

34、ose (-v)-recursive (-R)-incremental-xml-username USER-password PASS-no-auth-cache-non-interactive-config-dir DIR用途:查看版本库中文献列表例子:如果你但愿在没有下载工作拷贝时察看版本库有哪些文献,svn list会非常有用:$ svn list svn:/192.168.1.29/apsbat/trunkREADME.txtINSTALLexamples/svn diff命令简写svn di概要svn diff -r N:M TARGETREV.描述比较途径下2个修订版本区别变化无选

35、项:-revision (-r) REV-old OLD-TARGET-new NEW-TARGET-extensions (-x) ARGS-non-recursive (-N)-diff-cmd CMD-notice-ancestry-username USER-password PASS-no-auth-cache-non-interactive-no-diff-deleted-config-dir DIR用途:把分支合并入工作拷贝主干中,然后使用此命令,对版本库中主干和工作拷贝中主干进行比对,校验修改内容与否对的例子:比较BASE和你工作拷贝(svn diff最经惯用法):$ svn

36、diff COMMITTERS Index:COMMITTERS=- COMMITTERS(revision 4404)+ COMMITTERS(working copy)察看你工作拷贝对旧修订版本修改:$ svn diff -r 3900 COMMITTERS Index:COMMITTERS=- COMMITTERS(revision 3900)+ COMMITTERS(working copy)使用“”语法与修订版本3000和35000比较:$ svn diff svn:/192.168.1.29/apsbat/trunk/COMMITTERS3000 svn:/192.168.1.29/apsbat/trunk/COMMITTERS3500Index:COMMITTERS=- COMMITTERS(revision 3000)+ COMMITTERS(revision 3500)

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 品牌综合 > 行业标准/行业规范

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服