使用Subversion做版本管理.docx
运用Subversion做版本管理文件名I文档模版当前板木I0.1.0作».PeterWang完成H期:201209-26版本历史版本作者日期描述Pe<erWang201209-26创建第I堂SVN介绍11.1 SVn运用场景11.2 SVn架构21.3 运用SYn的基本工作流程3第2章搭建SVN服务器42.1 运行环境及节目规划42.2 软件打算42.3 安装4第3章APaChe配置53.1 文件打算53.2 KHApachc2.2konftd.conf53.3 测试启动Apachc53.4 运用Apache身份验证5第4章运用MySq1.身份验证74.1 MysqI打算74.2 配置apache用来验证svn用户名密码7修改apached.conf文件7重启apache脸证8第5章版本库管理95.1 自动化备份95.2 版本库迁移9三个步臊:9制;分迁移(SvndumpfiItcr)95.3 版本率合并10Subversion«-个开源的版本限制系统.便利大家一起维护管理文件和源代码. SUbVerSion支持1.inUX利WindCWs.更多是安装在1.inUX下.本文描述的是装在win764位下。 SVn版务器有2种运行方式:独立服务器和借助APaChe,2种方式各有利弊。本文描述借助Apachc的方式. SVR存储版本数拉;也有2种方式:BDB和FSFS“因为BDB方式在服务器中场时.有可能锁住数据,所以还是FSFS方式更平安一点。本文用默认的FSFS方式。TortoiseSVN是一款在Windows上广受欢迎的Subversion客户端软件,关于TOnOisCSVN的运用在本文中不述.1.1SVn运用场景1.2SvnJMMymodificationsRepositorytrankMergeotherschangesExaminenychangesSV1.1.statusWnreve11SVns(n(s-itdektemovesvninkdirmo<iifexistingfi1.esFirsttime:svncheckoutfi1.epf1.thtrcpogwtrunkSvnMsrtUft-uNVnmergeSVnreso1.ved1.3运用SVn的甚本工作流程1.oca1.copys,nbasicworkcyc1.e第2*林*SVNf1.*2.1 运行环境及书目规划SVN通过Apache迸行认证,认证数据在Myjq1.数据库中。<i).操作系统:Win764位(2) .IP地址:(3) .SVN仓库书目:a) D:SVN_SERVERSVN_ROOTSVN仓库根书目b) 运用Apache访问SVn仓库的鼠置根B目2.2 软件打算(1) .ApaChe服务器:(32位)(2) .MySqI数据库:(32位)(3) .SVN服务器:(32位)(4) .SVN客户端:(64位)非必需.必需64位,若装32位版本.则系统右键菜单没有TEoiseSVN菜单项。(5) .modu1.JaUth_mysq1.钱块.可从下载娘洋好的So文件:modu1.JaUth_mysq1.so«2.3 安装(1) .MySQ1.安装到:C:ProgramFi1.es(x86)VMySQ1.可以安联到冽的机借(2) .APaChe安装到:C:ProgriimFi1.es(x86)VpacheSoftwareFondationpache2.2.选样fora1.1.UsereonPrt8saservice旧配置为随意端口,不冲突即可,这里用欣认80)(3) .Subversion3*!C:'PrOgramFi1.es(x86)'Subvcrsion(4) .TortoiscSVN安袋到:CAProgramFi1.CSVrOnOiSCSVN笫3#ApacheItJ1.3.1 文件打算拷贝mod_dav_svn.so和mod_authz_svn,so.从SubversionXbin到APaChe2.2modu1.es拷贝全部d1.1.文件,从SubvcrsiiWbin到Apache2.2in3.2 £Apache2.2confd.conf(1) .去掉下面两行前面的注择1.oadh1.u1.cdav_niodu1.cmodu1.cs''m(x1._dav.so#1.oatIModu1.c<1.av_fs_nHKiu1.eniodu1.cs/mod_d:iv_fs.so(2),在全部1.OadMOdUIe语句的最终添加吓几行:#Svnsupport1.oadModuIcdav-svn-nuiu1.es',mod-dav-svn.so1.oadM(xiu1.cauthz-svn-nxMu1.cmodu1.csmod_au(hz._svn.so(3),在文件末尾添加:Inc1.udeD:SVN_SERVERApache.d.Ex1.*.d3.3 浦试启动Apache配置正确,胜利启动后的图示如卜:3.4 运用APaChe身份证运用apache身份验证就要运用apache的htpasswd.exe吩咐生成密码文件每例如下:吩咐行下执行:hpasswd-CE:svndcmosvn_auih_passwdp1.mm参数c创建密码文件svn_au(h_pas$wd并添加用户PImm然后会提示输入密码.接着添加用户:h1.passwd-inE:svndeinosvn_auth_passwdk1.11m参数m在已有的密码文件中潦加新用户k1.mm,并用MD5加密密网这样就创建了一个密码文件添加了两个用户.apached.conf文件,添加如下内容:<1.ocationsvn>DAVsvnSVNPanPaih"E:/svndemoMAuthIypcBasicAuthName"Subversionrepository,Requireva1.id-userAuthUscrFiIcE:/svndcma'svn_auth_passwd"#Au1.hUserFiIe指向率码文件V1.OCa1.ion>现在通过:川。MhOSt:804MrCPOMg访问资源库须要输入用户名密码.若不在pachcd.conf文件中添加V1.OCatK>n>将1.ocation存为1.jsvn仓库名同名的文件,放在D:SVN_SERVERApachc.d.E%亦可,囚为叩ached.conf已经建立对该位Wt的包含:IM1.UdeD:SVN_SERVERA|)ache.d.Ext*.d,第4*f1.Mysq1.>>4.1 Mysq1.ITW(1) .创建SVn库,用于存储SVn用户身份CREATEDATABASE'svn'DEFAU1.TCHARACTERSETUU8:(2) .对SVn库的访问授权Granta1.1.privi1.egesonsvn.svnuscr'1%*identifiedby,'I23456*;F1.ushprivi1.eges:(3) .创建SVn用户表CREATETAB1.Euser,info'(uscr-namc,chart30)NOTNU1.1.CoMMENT'用户名'uscr_passwd'varchar(50)NOTNU1.1.COMMENT'密码',PRIMARYKEYCUSejrwne)ENGINE=InnoDBDEFAU1.TCHRSET(;(4) .插入一条Ss用户记录insertintoUSCrJnfb(USCr_namc.usCJPaJiSWd)va1.ues(,pcter.wangmd5(,123456,);insertintouscr_infb(uscr_namc,uscr_passwd)va1.ues('tony.zhao',md5C1.23456,);4.2 配置叩ache用来It证svn用户名宙码(I)把mod_auih_mysq1.so拷贝到Apachc2.2modu1.es(2)修改apachedconf文件添加如卜内容.使iipache加我mysq1.价价舲证模块:1.oadMOdUICauthz_svn.rnodu1.emodu1.cs'mod-authz-nysq1.so(3)创建q“仓库吩咐行方式:SVnadmMCrea1.eD:SVN_SERVERVN_ROOT.iest|xoiec(图形化方式:创建并进入文件夹D:FVN_SERVERSVN_ROOT依SIPrUjCct,空白处右ti1.TortoiseSVNCreaterepositoryhere。(4)泥置仓庠访问权限用户授权配置文件位置:D:SVN_SERVERHVN_ROOTiesipmjeaconfwihzAUthZ文件内容参考(Iestprojec1.d):(groupsjadmin=petecwag,tony.ha0inadmn=rw(testproject:/admin=rw4.2.1 修改HPHdwdconf文件添加如下内容:<1.ocaionsvntestrojeci>DAVsvnSVNPath,D:XSVN_SERVERSVV_ROOTMCKPmjcct”Mr芬ZM的侬物;*SVN1.istParcntPaihonuthzSVNccessFi1.eD:SVN_SERVERSVN_ROOTxestprojecOconAauthz#仓昨按杈用户配置文件AUIhTyPCBiiM样此琮11前乂俄是Basic,不支仆其他魅数位AuthNamc"SubversionRCPOSitOry”、愎根岑说明MthUsetFi1.eMeWmiH幄JMYSQ1.住行认证,则此处必需为AIeWiiu1.1.或AuthMySQ1.Enab1.cOn#是,1.*.'i1.mysq1.数据隹认证(QnOfi)AUIhMySQ1.HOStIOCa1.hoM#故抵原Hcs1.,IPAuthMySQ1.UserSvnuser*致拉;MHj/ZAu1.hMySQ1.Passwoni123456”数据庄用户密码AuthMySQ1.DBsvn#数据HZAuthMySQ1.UserTabIe(b1.j)asswd攵用户幺和密码的数抄用&.Au1.hMySQ1.NameFieIdUsejIUime#在中。放JH体厅以ZAuthMysQ1.PasswordFieIdUSerFSSWd#一中7f;J攵子出W7段ZAuthMySQ1.PwEncryptionmd5#密码的加密方式SOnCICryP1.Iscramb1.edmd5aesIsha1.)Requireva1.id-user#f.T:"/;:user,group,va1.id-user.敢乂同va1.id-user<1.ocation>假如不脩改apached.conf文件,将1.ocation存为与svn仓库幺同幺的文fhtes1.prjcx(.d放在亦可。4.2.2 13apacheIHE重&apache.之后通过TorIoiqcSVN钻入地址:192.168.1.202:80/svn/testproject.输入UsCjinfO我中的用户名和密码:peter.wang/123456,toy.zhao123456即可访问仓库.笫5#机本4*at5.1 自动化备份为了便于自动化备份SVn库,每添加一个新的svn库时,谢把文件夹"增和新SVn库前,请读"卜面的de1.UiBackup.bat和po*1.-c(>mmi1.ba1.措贝到新svn库的hooks甘目I'.de1.taBackup.bat和pos1.-commit.bat中的路径可能须和依据状况先做修改.5.2 版本库迁移5.2.1 三个步 导出旧的版本库:SViiadrnindumpm),rcpos>dumpfi1.esvnadmndumpREPOS_PATH-r1.OWER:UPPERH-incrementa1.REpOS_PATH是版本悻的路径t区世丈件跖r1.OWER:UPPER|用于指定导出的修订版本范用,由参数r和两个用:号隔开阿拉伯数字组成。例如:r0:50衣示导出才版本0到版本SO之间的全部修订版,-r是revision的缩写。 导入新的版本库:Svnadmin1.oadncwrcpos<dumpH1.cSvnadmin1.oadREPOS.PATHSVnadminbad吩咐用于从标准输入流/其它流中仔入版本库,REPOS.PATH是要导入的目标版本库横盘文件珞径。 通知客户端切换版本库分支。在完成服务器端的版本迁移之后,必需通知客户端运行切换分支的吩咐,否则客户眼的提交还是提交到旧的版本库去。SVN也为我们打除了这样的吩附:SVnSWitCM它用于更新工作副本的UR1.。5.2.2 (svumpfiher)上面是完整迁移,部分迁移须要用到SYndUmPfiItCr吩咐,对dump文件进行过滤,生成新的fi1.terdump文件.Svnduinpfi1.ier<1.roemMyrevs-renumber-revs-skipmissing-merge-sourcesinc1.ude要杼入的回I<dump出来的文件>过注后的目标文件>fi1.tCT.I.gSvndiimpfi1.ter选项说明drop-empty-revs;移除空记录rnumberrevs在过沌后,申新安排版本号。inc1.ude:将不包含指定前圾的项目从转储数据流中解除.多个值之间用空格分隔exc1.ude:将包含指定前级的项目从转储数据流中解除.inva1.idcopysourcepath借谀处理留意,假如在SYndUmPfntCr过程中出皓,提示:Svndumpfi1.tenInva1.idcopysourcepathXXXX.这个是指须要导出的路径不是正常添加的,而是从别的位置移动/理命名的,有两种解决方案,一个是在dump的时候只导出该出错版本只后的版本,一个是把原始路径也inc1.ude进来。5.3 版本庠合并另一种是版本用合并的状况:但设A、B咋合并到C库。则A、B分别导出并过滋为:A.dunp.B.dumpc然后Svnadmin1.oad分别把A.dump.B.dump导入到C库即可O本章Eh:SVN版本库的迂格:Subvefston荒全委学SVN不同窿之间的合并网步)峨决方案SSVndUmpf玳a运用汜记:Subversion1.oadSvndumpfc1.tefDump