SVN版本管理规范14_第1页
SVN版本管理规范14_第2页
SVN版本管理规范14_第3页
SVN版本管理规范14_第4页
SVN版本管理规范14_第5页
已阅读5页,还剩19页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、.通联支付网络服务股份有限企业技术支持中心研发部版本管理规范受理市场支持部2011年1月.版本控制信息版本日期拟稿和改正说明1.02010-12-6刘志毅拟稿宣布1.12011-1-7刘志毅增添了邮件通知1.22011-1-25刘志毅从头编写了管理规范补充了邮件通知接受方和上线版本的编译1.32011-1-28沈德权流程详见2.3、2.4和3.2.1章节1.42011-2-16刘志毅补充了紧迫改正方案,详见.目录文档类型使用对象41序言.41.1目的.41.2范围.41.3术语定义.42版本管理.621版本表记方法.6211版本表记说明.622目录构造.723版本的寄存.72.3.1trunk

2、.82.3.2branches.82.3.3tags.82.3.4files.82.3.5script.82.3.6sql.824权限控制管理.83更新管理(版本升级).93.1版本升级原则.93.2新版本的宣布.9版本管理流程说明.9版本管理简单流程图.11角色定位说明.11版本管理守则.124备份管理.125SVN常用命令说明.13.文档类型使用对象文档类型该文档是为技术支持中心供给一个版本管理规范性文件。使用对象该文档使用对象为技术支持中心研发部版本管理人员,以及其余有关人员。未经赞同,该文档不得供给给上述规定对象以外的人员阅读或使用。1序言1.1目的本文档是为规范技术支持中心研发版本管

3、理而制定的。1.2范围本文档为研发部各人员供给有关版本管理规范的有关内容,包括:版本表记方法版本管理流程角色定位SVN常用命令说明1.3术语定义SVNSvn是一个开源的版本控制系统Subversion的简称文档上线所需的有关文档,包括部署手册,源码改正清单列表等.脚本上线所需的有关脚本,包括编译脚本等SQL语句上线所需的有关SQL语句,包括建表语句等配置管理表记和确定系统中配置项的过程,在系统整个生计周期内控制这些项的投放和更动,记录并报告配置的状态和更动要求,考证配置项的完满性和正确性。软件配置软件的详细形态在某时刻的刹时影像。配置项软件配置管理的对象称为配置项,如:源码。基线软件生计周期中

4、各开发阶段尾端的标志,它的作用是把各阶段工作的差别更为明确化,使本来连续的工作在这些点上断开,使之便于查验和必然阶段成就。邮件服务需求转达,标签转达时候,需要发送邮件通知对方或许回答对方版本控制经过svnco把分支文件夹拷贝到开发环境进行开发,并进行版本控制版本管理依照需求,创立开发所需的分支标签管理为测试版本,上线版本创立标签版本更新经过svnci如期备份改正内容,或经过svnupdate更新目前所开发的源码,或经过svnmerge把骨干新增内容更新至分支.版本测试经过svnexport校验源码,进行源码的比对,测试版本修复对目前测试或上线版本出现的问题进行修复版本矛盾由于改正了同一个文件,

5、所以svnci,svnmerge以及svnup时会报错,造成了版本矛盾问题。2版本管理21版本表记方法为了使工作规范化、一致化,各系统推行的版本表记管理方法分为:上线版本,测试版本,修复版本,文档版本,脚本版本以及sql语句版本。211版本表记说明上线版本:在生产环境上运行的正式版本。测试版本:在UAT环境上运行的测试版本。修复版本:在生产环境上用于修复目前版本的补丁版本。以“acc”开头,版本号放后。版本号分2节:主版本号为上线时间点,由3节组成,每节之间以小数点(.)间隔。如acc_11.01.26表示主版本号为11.01.06,上线时间为2011年1月26日,次版本号为修复版和测试版本的

6、组合,比方acc_11.01.26_patch1,主版本为11.01.26,次版本号为patch1,说明该版本为1次修复版本,如acc_11.01.26_test1,说明该版本为1次测试版本,如acc_11.01.26_patch1_test1,说明该版本为1次修复版本的1次测试版本。文档版本:上线版本对应的有关文档。以“file”开头,版本号放后。就一个主版本号,为上线时间点,如,指文档为上线版本11.01.26的文档。注:文档名必定是英文+数字组成,暂不支持中文名脚本版本:上线版本对应的有关脚本。以”spt”为开头,版本号放后,就一个主版本号,为上线时间点,如spt_11.01.26,.指

7、脚本为上线版本11.01.26的脚本sql语句版本:上线版本对应的sql语句。以“sql”为开头,版本号放后。就一个主版本号,为上线时间点,如,指sql语句为上线版本11.01.26的sql语句。22目录构造现以其中一个库名的目录构造举好似下:23目录说明以子系统类型为主目录(即库名)。库名子系统说明apsbmAPSBMapsbat清分清理apsms商户服务平台商户服务平台apsrisk_backAPSRisk_Back风险管理系统(后台)apsonlTGPnspNSPtpospTPOSP.commfe通讯前置alipay支付宝前置bank银行前置apsrptAPSRPT统计报表pospPOS

8、Ptest测试使用apmsAPMS商户管理系统目前暂不采用SVN管理apsrisk_frontAPSRisk_Front风险管理系统(前端).NET目前暂不采用SVN管理2.3.1trunk骨干文件夹,寄存的是目前系统的最新源码2.3.2branches分支文件夹,寄存的是目前开发和历史开发的分支文件夹的源码。2.3.3tags标签文件夹,寄存的是目前上线版本和历史版本的源码。2.3.4files文档文件夹,寄存的是目前上线版本和历史版本的有关文档。2.3.5script脚本文件夹,寄存的是目前上线版本和历史版本的有关脚本。2.3.6sqlsql语句文件夹,寄存的是目前上线版本和历史版本的有关

9、sql语句。24权限控制管理为保障版本的安全性,一致性,以及防备不测改正,必定对不相同的文件夹设.置不相同的接见权限。文件夹权限类型:只读权限,读写权限。用户类型:开发人员、测试人员、配置管理员、QA、项目经理等。为了控制不相同的使用权限,依照要求在服务器上分别成立不相同的用户,针对不相同的配置项所在目录分派不相同的权限。为了便于管理,应以表格的形式列出人员与管理对象的接见关系(用户权限清单)。3更新管理(版本升级)3.1版本升级原则版本升级应严格归入版本管理的控制之下。应当谨慎地控制版本的升级,保障高版本的向下兼容性,或供给严格定义的升级方法。在下面几种情况下,进行版本演化和升级:当系统有重

10、要的需求,需要较大的改良或改正时,主版本号为新版本上线时间点。当系统有重要的BUG问题时,次版本要增添patch1。关于变动量比较少的,如修复小问题之类的,能够从目前正在开发分支支中,进行改良或改正,和下一个新版本一同上线。记录版本升级过程。每次版本升级,都要填写版本升级记录表。3.2新版本的宣布3.2.1版本管理流程说明需求和上线点确认后,开发人员以邮件通知版本管理员,邮件内容包括以下要素:上线点时间,开发系统,开发内容等。版本管理员依照上线点,在对应的版本库下创立分支文件夹,并以邮件回答给开发人员。开发人员依照版本管理员供给的分支文件名从版本库的分支文件夹内checkout到开发服务器成立

11、版本控制,进行程序开发。开发人员开发达成后,把分支文件夹提交到版本库,尔后从版本库中checkout出骨干的工作拷贝,并把版本库中最新的分支文件归并至骨干的工作拷贝,归并达成后,进行diff的比对,确认没问题后,最后把骨干的工作拷贝提交至版本库。开发人员以邮件通知版本管理员,见告目前开发的分支已经达成,并已更新至骨干中,同时邮件内容必定含有:部署手册,源码改正清单等有关文档,编译脚本,SQL语句。版本管理员把目前骨干版本创立标签文件夹,记录目前测试版本,以邮件回答给环境管理员、测试人员、开发人员、QA和项目经.理,并附带有关文件。环境管理员依照版本管理员供给的测试标签export至测试服务器进

12、行版本测试,依照部署手册,源码改正清单等文档对源码比对,部署达成后,通知测试人员做功能测试等。测试达成,测试人员以邮件通知版本管理员,版本管理员把测试标签创立为上线标签,以邮件回答给开发人员、测试人员、环境管理员、QA和项目经理,并附带有关文件,准备上线。核心系统:开发人员用上线标签的源码进行编译后,再针对上线内容进行测试,通事后,提交上线包,有关文档给运行部上线。管理系统:开发人员,提交测试经过的上线包,有关文档给运行部上线。(序号对应以下版本管理流程图)测试未经过,开发人员对代码进行二次开发,待开发达成后,重复以上步骤4-7,直至上线紧迫改正方案触发条件:下一个上线版本已经并入了骨干,需要

13、在下一个上线版本前插入一个补丁版本。改正需求和上线点确认后,开发人员以邮件通知版本管理员,邮件内容包括以下要素:上线点时间,开发系统,开发内容等。版本管理员依照上线点,在对应的版本库下创立分支文件夹(分支名为acc_xx.xx.xx_patch1),并以邮件回答给开发人员。开发人员依照版本管理员供给的分支文件名从版本库的分支文件夹内checkout到开发服务器成立版本控制,进行程序开发。开发人员开发达成后,把分支文件夹提交到版本库,以邮件通知版本管理员,见告目前开发的分支已经达成,同时邮件内容必定含有:部署手册,源码改正清单等有关文档,编译脚本,SQL语句。版本管理员把分支版本创立标签文件夹,

14、记录目前测试版本(测试标签:acc_xx.xx.xx_patch1_test1),以邮件回答给环境管理员、测试人员、开发人员、QA和项目经理,并附带有关文件。环境管理员依照版本管理员供给的测试标签export至测试服务器进行版本测试,依照部署手册,源码改正清单等文档对源码比对,部署达成后,通知测试人员做功能测试等。测试达成,测试人员以邮件通知版本管理员,版本管理员把测试标签创立为上线标签,以邮件回答给开发人员、测试人员、环境管理员、QA和项目经理,并附带有关文件,准备上线。上线成功后,开发人员把紧迫修复的分支()归并入下一个上线版本的分支内,归并后无任何矛盾,再提交到版本库,尔后从版本库中ch

15、eckout出骨干的工作拷贝,并把版本库中最新的分支文件归并至骨干的工作拷贝,归并达成后,进行diff的比对,确认没问题后,最后把骨干的工作拷贝提交至版本库。重复以上步骤4-7,直至上线.3.2.2版本管理简单流程图3.2.3角色定位说明开发人员需要做:邮件服务,版本控制,配置项,文档,脚本,SQL语句,版本更新,版本修复,版本矛盾测试人员需要做:邮件服务,版本编译,版本测试版本管理人员需要做:邮件服务,配置管理,基线,版本管理,标签管理.3.2.4开发守则请开发人员严格履行规范中的制定的版本管理流程。上线前,必定准备好相应的文档,脚本,SQL语句,以便测试人员进行正确的测试。在源码开发中的改

16、正或许改良的地方,必定增添说明部分,以便测试人员进行正确的校验在多人对同一个分支开发时,需要做好如期checkin,以保证源码无矛盾分支达成单元测试,进行集成测试时,才可归并入骨干,若是要自己做集成测试,则能够把骨干归并入分支进行测试。在多个分支开发的情况下,后上线的分支必定等前上线的分支归并入骨干后测试经过了,再可并入骨干后上线的分支必定如期从骨干归并入分支文件夹,以保证目前开发的源码是以最新上线包的基础上开发的。在当地的工作拷贝中归并入骨干后,再用其与版本库的骨干进行源码比对,保证没有任何问题此后,再checkin到版本库中。4备份管理为了保证文档的最大可恢复性,要随时及如期地进行备份工作

17、。1、随时备份:1)开发人员每日都要将自已当日改正的源文件在当地机器进步行备份。2)开发负责人每日要将所有源文件在当地机备份。3)建议备份采用循环备份。2、如期备份(1)备份形式为硬盘备份和光盘备份。硬盘备份时,要备份在独立的硬盘上;光盘备份时,要将光盘寄存在可靠的地方。(2)备份周期视各系统的详细情况而定。若是处于开发阶段,每周应付所有的源程序项进行备份,一般为每周周五;若是处于其余阶段,依照详细情况而定,但周期不能够高出两周。(3)备份要由版本管理员负责,备份原则应是保证文档的最大可恢复性。(4)关于历史版本或某用户的特别版本,若是无特别原因不再进行修改的话,建议用光盘进行备份,而且应有备

18、份盘说明文件BACKUP.TXT。该文件应当记录以下内容:本次备份时间,备份内容,履行人。.5SVN常用命令说明svncheckout命令简写svnco纲领svncheckoutURLREV.PATH描绘从版本库取出一个工作拷贝。改变创立一个工作拷贝。选项:-revision(-r)REV-quiet(-q)-depthARG-force-acceptARG-usernameUSER-passwordPASS-no-auth-cache-non-interactive-ignore-externals-config-dirDIR用途:版本控制例子:.$lssvncommit命令简写svnci纲

19、领svncommitPATH.描绘将改正从工作拷贝发送到版本库。改变工作拷贝,版本库选项:-message(-m)TEXT-file(-F)FILE-quiet(-q)-no-unlock-non-recursive(-N)-targetsFILENAME-force-log-usernameUSER-passwordPASS-no-auth-cache-non-interactive-encodingENC-config-dirDIR用途:版本更新例子:$svncim“备注信息”Sendinge.dll(改正的文件)Transmittingfiledata.Committedrevision

20、21.svnupdate命令简写svnup纲领svnupdatePATH.描绘会把版本库的改正带到工作拷贝,若是没有给定校正版本,它会把你的工作拷贝更新到HEAD校正版本,否则,它会把工作拷贝更新到你用-revision指定的修订版本。为了保持同步,svnupdate也会删除所有在工作拷贝发现的无效锁定关于每一个更新的项目开头都有一个表示所做动作的字符,这些字符有下面的意思:A增添D删除U更新矛盾G归并第一列的字符反应文件自己的更新,而第二列会反应文件属性的更新。改变工作拷贝2选项:-revision(-r)REV-non-recursive(-N)-quiet(-q)-no-ignore-i

21、ncremental-diff3-cmdCMD-usernameUSER-passwordPASS-no-auth-cache-non-interactive-config-dirDIR-ignore-externals用途:版本更新例子:.$svnupsvnmerge命令简写svnmerge纲领svnmergesourceURL1NsourceURL2MWCPATHsvnmergesourceWCPATH1NsourceWCPATH2MWCPATHsvnmerge-rN:MSOURCEREVWCPATH(最常用)描绘第一种和第二种形式里,源路径(第一种是URL,第二种是工作拷贝路径)用校正版

22、本号N和M指定,这是要比较的两组源文件,若是省略校正版本号,缺省是HEAD。第三种形式,SOURCE能够是URL或许工作拷贝项目,与之对应的URL会被使用。在校正版本号N和M的URL定义了要比较的两组源。WCPATH是接收变化的工作拷贝路径,若是省略WCPATH,会假设缺省值“.”,除非源有相同基本名称与“.”中的某一文件名字般配:在这种情况下,差别会应用到那个文件。不像svndiff,归并操作在履行时会考虑文件的祖先,当你从一个分支归并到另一个分支,而这两个分支有各自重命名的文件时,这一点会特别重要。改变工作拷贝选项:-revision(-r)REV-non-recursive(-N)-qu

23、iet(-q)-force-dry-run-diff3-cmdCMD-ignore-ancestry-usernameUSER-passwordPASS.-no-auth-cache-non-interactive-config-dirDIR用途:版本更新例子:将一个分支归并回骨干(假设你有一份骨干的工作拷贝,分支在校正版本250创立):$svncosvn:/9/apsbat/trunk(第一成立骨干的工作拷贝)$cdtrunk$svnmerge-r250:255svn:/9/apsbat/branches/acc_11.01.26(比较的250版本和255版本之间的差别,应用到骨干的工作拷贝

24、中)Utrunk/tiny.txttrunk/thhgttg.txtUtrunk/win.txt若是你的分支在校正版本23,你希望将骨干的改正归并到分支,你能够在你的工作拷贝的分支上这样做:svnresolved命令简写svnresolved纲领svnresolvedPATH.描绘删除工作拷贝文件或目录的“conflicted”状态。这个程序不是语义上的改变矛盾标志,它可是删除矛盾有关的人造文件,进而从头赞同提交;也就是说,它告诉Subversion矛盾已经“解决了”。改变工作拷贝.选项:-targetsFILENAME-recursive(-R)-quiet(-q)-config-dirDI

25、R用途:版本矛盾例子:若是你在更新时获得矛盾,你的工作拷贝会产生三个新的文件:$svnupdateCfoo.cUpdatedtorevision31.$lsfoo.c表示矛盾,说明服务器上的变动同你的变动矛盾了,你需要自己手工去解决。若是你碰到矛盾,三件事你能够选择:“手动”归并矛盾文本(检查和改正文件中的矛盾标志)。用某一个临时文件覆盖你的工作文件。?运行svnrevert来放弃所有的改正。当你解决了foo.c的矛盾,而且准备提交,运行svnresolved让你的工作拷贝知道你已经达成了所有事情。简单介绍下手工归并矛盾:这里一个简单的例子,由于不良的沟通,你和同事ttl,同时编写了sandw

26、ich.txt。ttl提交了改正,当你准备更新你的版本,矛盾发生了,我们不得不去改正sandwich.txt来解决这个问题。第一,看一下这个文件:$catsandwich.txtToppieceofbreadMayonnaiseLettuceTomatoProvolone.r2CreoleMustardBottompieceofbread小于号、等于号和大于号串是矛盾标志,其实不是矛盾的数据,你必然要确定这些内容在下次提交以前获得删除,前两组标志中间的内容是你在矛盾区所做的改正:.r2过去你其实不希望可是删除矛盾标志和ttl的改正当他收到三明治时,会特其余惊讶。所以你应当走到她的办公室或是拿起

27、电话告诉ttl,你没方法从从意大利熟食店获得想要的泡菜。一旦你们确认了提交内容后,改正文件而且删除矛盾标志。ToppieceofbreadMayonnaiseLettuceTomatoProvoloneSalamiMortadellaProsciuttoCreoleMustardBottompieceofbread现在运行svnresolved,你已经准备好提交了:$svnresolvedsandwich.txt$svncommit-mGoaheadandusemysandwich,discardingttlsedits.记着,若是你改正矛盾时感觉杂乱,你能够参照subversion生成的三个

28、文件包括你未作更新的文件。你也能够使用第三方的归并工具查验这三个文件。svnexport命令简写svnexport.纲领svnexport-rREVURLPEGREVPATHsvnexport-rREVPATH1PEGREVPATH2描绘第一种从版本库导出洁净工作目录树的形式是指定URL,若是指定了校正版本REV,会导出相应的版本,若是没有指定校正版本,则会导出HEAD,导出到PATH。若是省略PATH,URL的最后一部分会作为当地目录的名字。从工作拷贝导出洁净目录树的第二种形式是指定PATH1到PATH2,所有的当地改正将会储藏,可是不再版本控制下的文件不会拷贝。改变当地磁盘选项:-revi

29、sion(-r)REV-quiet(-q)-force-usernameUSER-passwordPASS-no-auth-cache-non-interactive-non-recursive-config-dirDIR-native-eolEOL-ignore-externals用途:版本测试例子:从版本库导出目录(打印所有的文件和目录):Exportedrevision15.svnlog命令简写.svnlog纲领svnlogPATHsvnlogURLPATH.描绘缺省目标是你的目前目录的路径,若是没有供给参数,svnlog会显示目前目录下的所有文件和目录的日志信息,你能够经过指定路径来精

30、华结果,一个或多个校正版本,或许是任何两个的组合。关于当地路径的缺省校正版本范围BASE:1。若是你可是指定一个URL,就会打印这个URL上所有的日志信息,若是增添部分路径,只有这条路径下的URL信息会被打印,URL缺省的校正版本范围是HEAD:1。改变无选项:-revision(-r)REV-quiet(-q)-verbose(-v)-targetsFILENAME-stop-on-copy-incremental-limitNUM-xml-usernameUSER-passwordPASS-no-auth-cache-non-interactive-config-dirDIR用途:查察版本信息,做归并参照例子:$svnlog-r20|harry|2003-01-1722:56:19-0600(Fri,17Jan2003)|1lineTweak.(-m的备注信息)-r17|sally|2003-01-1623:21:19-0600(Thu,16Jan2003)|2lines.svnlist命令简写svnls纲领svnlistTARGE

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论