




已阅读5页,还剩21页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
此文档收集于网络,如有侵权请联系网站删除protective adj. 给予保护的;保护的lunar adj. 月的;月亮的;阴历的operator n. (电脑)操作员;接线员vt. & vi. (swung, swung) 摇摆;摆动减轻痛苦的事物wax disk 旧式唱片(非洲东南部国家)sothat 如此以致于grand adj. 大的;豪华的;雄伟的不自在的一、SVN培训-重点分支、合并、tagVisualSVN Server TortoiseSVN CornerStone1. 名称解释SVN术语,Clearcase(UCM & Base)术语* repository vob 存储库 配置库* trunk base mainline integration-stream主干 主线 集成流* branch development-stream 分支 开发流* tag baseline lable snapshot 标签 基线 快照* workcopy view 工作副本 视图 本地工作空间意义是人赋予的仅供学习与交流2. SVN工作方式 二、Branch & Merging* The next point to note is that merging always takes place within a working copy. If you want to merge changes into a branch, you have to have a working copy for that branch checked out, and invoke the merge wizard from that working copy using TortoiseSVN Merge. SVN可以为一个版本库中的内容(主干)建立一个分支.分支和主干完全独立,就相当于把代码再复制一份,重新添加到版本库中。但SVN提供另一个功能,就是把主干做出的修改合并到分支中,以及把分支修改的内容合并到主干中。示例:基于TortoiseSVN1.建一个分支.建立时要注意:1.当前复制源,即专业术语中的 主干(truck)2.分支存放的位置. 当然,分支也是在SVN版本库中.3.写上日志.这个大家应该懂的.4.如果目录路径不存在,勾选“Create intermediate folders”,否则确认后会报错。Switch选项建议为空。switch含义:是否把主干的路径切换到分支.如果勾选了,建立分支后,在主干里做出的修改并提交后,更新会提交到分支上。主干的版本源内容不会变。这时我们看一下 trunk 目录的属性,可以看到它的路径已经变成: /calc/branches/my-calc-branch 了。为了避免产生困惑。以及失误。在建立的时候不要勾上 切换到分支 的选项。如果勾上了,我们还是切换回去:注意:1.主干的目录2.版本库源路径这时你便可以在 /calc/branches/my-calc-branch 分支上开发新的功能,且不会影响到其他成员开发或维护主干的内容。其他方向建分支:在Repo-Browser中:1. Ctrl+拖拽的方式;2. Copy to3. ShowLog中选择任意Reversion,右击-Branch/Tag2.合并主干的变更也许过了一段时间,原本的 /calc/trunk 主干可能已经有其他成员陆续修正了一些 Bugs,但这时你的分支 /calc/branches/my-calc-branch 就可以直接套用主干 ( /calc/trunk ) 的更新,除了避免重复的工作外 ,也可以避免版本的冲突,因为多人改同样的文件可能发生冲突。经常將 开发主干 ( /calc/trunk ) 的变更透过 svn merge 合并至 分支 ( /calc/branches/my-calc-branch ) 是一个非常好的习惯,这样才不会让你脱离主干(trunk) 过久而导致将分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 时发生许多冲突。从主干 ( /calc/trunk ) 合并至分支 ( /calc/branches/my-calc-branch ) 通常选第 1 个,也就是 Merge a range of revisions注意.我们是在分支上使用的 Merge 功能.因为是要在分支上应用主干的更新.在 Merge 的窗口有以下注意事項:1.合并的来源,由于我们打算从主干 ( /calc/trunk ) 合并至分支 ( /calc/branches/my-calc-branch ),所以合并的來源要选 /calc/trunk 才对!2.合并的结果会直接与目前工作目录(Working Copy) 做比对,并修改目前工作目录中的所有文件。因此建议在做合并之前可以将所有尚未 commit 的档案先 commit 到版本库,避免不必要的冲突事件发生。在正式进行合并(Merge)之前,建议先执行 Test merge 看看是否会发生什么事!若无异状则可直接按下 Merge 按钮进行合并动作,这时从 主干 ( /calc/trunk ) 分支出来的到目前工作目录的版本就会做个比较,然后直接套用变更到你现有的文件、目录或属性里。在合并之后如果没有发生冲突,不代表真的没冲突,所以必须再次对原始码做出验证后才能 commit 进版本库,建议可参考以下流程:1.将项目进行建置(Build)2.如果没问题再对项目进行单元测试(Unit Testing)或手动测试(Manual Testing)3.如果都没问题再 commit 目前合并无误的版本到版本库!3.合并分支到主干最后我们的 my-calc-branch 分支已经将新功能开发完成且测试无误,所以要将 分支 ( /calc/branches/my-calc-branch ) 的最终版本合并回 主干 ( /calc/trunk ),这时的手续如下:从 分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 通常选第 2 个,而特别选择 Reintegrate a branch 这个选项是很重要的,因为这有以下好处:1.让 Subversion 能知道 主干 ( /calc/trunk ) 是从哪个分支、哪些版本合并进来的2.有效节省 Subversion Repository (SVN储存库) 的空间,因为不用重复储存分支的所有变更信息3.可以产生 Revision graph 得知项目开发的分支状况一样可以先 测试合并(Test merge) 再正式进行 合并(Merge)合并完后再将变更 commit 到版本库4.删除使用完毕的分支当 分支 ( /calc/branches/my-calc-branch ) 合并回 主干 ( /calc/trunk ) 并 commit 了之后,该分支就没用了,该分支如果未来不再更新或继续开发,Subversion 也不会继续追踪这个分支的变更 (因为之前已经 Reintegrate 过了),建议将该分支删除。三、配置管理策略 演变过程见ppt关于什么时候主干和流的同步,了解配置工具特性后,根据开发情况由用户决定。四、回顾总结1. 一个workcopy和它对应的流之间的同步:update从流更新到workcopy(有冲突时,编辑冲突-解决状态),编译测试没有问题之后,从workcopy提交(commite)到流。2. 其实一个开发流和主干的关系,可以从宏观上理解成一个workcopy和它对应的流的关系,只不过开发流和主干之间的互动变了一个名称:从主干更新到开发流用merge(有冲突时,编辑冲突-解决状态),从开发流提交到主干也是merge。从1到2就是随着开发人员的增多和项目需要的增加,而出现的配置策略的变化。对update的解读,因为workcopy刚建立的时候是从流的最新状态下载下来的(此时版本一致);如果有其他人提交到流,此时流中有些文件的版本高于workcopy中的版本,在做update时会将流中最新的版本同步下来:1.如果新版本正是自己编辑的文件,此文件就会处于冲突状态,需要工具或手动解决;2.如果新版本与本地文件没有冲突,自动同步下流上的更新;3.如果没人有提交(workcopy和本地版本一致)update不会同步下来任何东西(相当于此时没有update)。流和流之间的merge其实和workcopy和它对应的流update的效果是一样的,都是把新的版本(新的变更)同步下来:1.新的变更与本地变更有冲突,在本地编译解决冲突;2.新变更与本地变更无冲突,同步下来新的变更,此时本地变更是(A+B两个的变更);3.主干上没有人提交变更,同步不下来东西。常规模式:project/trunk -线上稳定最新的版本(主干可测的稳定版本,永远可以发布的) tags/btags -测试基线 tags/rtags -release基线(发布基线) branches -开发空间,存放分支现在提测研发人员没有做测试版本tag,建议提测做相应的tag放在btags中,发布上线的版本做tag到rtags中。比如:Zhuoda543 544 545都是给测试打的版本,把基线打到btags(甚至测试人员可以用btags下面的代码自己编译出测试包);每个测试的tag记录了这次的变更。正式上线的Zhuoda546做tag到rtags中,方便以后追溯。五、SVN使用注意事项提交之前先更新1.SVN更新的原则是要随时更新,随时提交。当完成了一个小功能,能够通过编译并且自己测试之后,谨慎地提交。 2.如果在修改的期间别人也更改了svn的对应文件,那么commit就可能会失败。如果别人和自己更改的是同一个文件,那么update时会自动进行合并,如果修改的是同一行,那么合并时会产生冲突,这种情况就需要同之前的开发人员联系,两个人一起协商解决冲突,解决冲突之后,需要两人一起测试保证解决冲突之后,程序不会影响其他功能。 3.在更新时注意所更新文件的列表,如果提交过程中产生了更新,则也是需要重新编译并且完成自己的一些必要测试,再进行提交。这样既能了解别人修改了哪些文件,同时也能避免SVN合并错误导致代码有错。保持原子性的提交(一次提交只改一个bug) 每次提交的间歇尽可能地短,以几个小时的开发工作为宜。例如在更改UI界面的时候,可以每完成一个UI界面的修改或者设计,就提交一次。在开发功能模块的时候,可以每完成一个小细节功能的测试,就提交一次,在修改bug的时候,每修改掉一个bug并且确认修改了这个bug,也就提交一次。我们提倡多提交,也就能多为代码添加上保险。对SVN提交的信息(Log Message)采用明晰的标注 在一个项目组中使用SVN,如果提交空的标注或者不确切的标注将会让项目组中其他的成员感到很无奈,项目经理无法很清晰的掌握工作进度,无法清晰的把握此次提交的概要信息。在发现错误后也无法准确的定位引起错误的文件。所以,在提交工作时,要填写明晰的标注,能够概要的描述所提交文件的信息,让项目组其他成员在看到标注后不用详细看代码就能了解你所做的修改。SVN提交时注意不要提交本地自动生成的文件 一般配置管理员都会将项目中一些自动生成的文件或者与本地配置环境有关的文件屏蔽提交(例如eclipse中的.classpath文件等)。如果项目中没有进行这方面的配置来强行禁止提交这样的文件,请自觉不要提交这样的文件。提交了这样的文件后,别人在更新后就可能与本地的环境冲突从而影响大家的工作。不要提交不能通过编译的代码 代码在提交之前,首先要确认自己能够在本地编译。如果在代码中使用了第三方类库,要考虑到项目组成员中有些成员可能没有安装相应的第三方类库。项目经理在准备项目工作区域的时候,需要考虑到这样的情况,确保开发小组成员在签出代码之后能够在统一的环境中进行编译。不要提交自己不明白的代码 代码在提交入SVN之后,你的代码将被项目成员所分享。如果提交了你不明白的代码,你看不懂,别人也看不懂,如果在以后出现了问题将会成为项目质量的隐患。因此在引入任何第三方代码之前,确保你对这个代码有一个很清晰的了解。8.7SVN提交时提前协调好项目组成员的工作计划项目经理应该合理分配工作计划。每个成员在准备开始进行某项功能的修改之前,如果有可能,先跟工作小组的成员谈谈自己的修改计划,让大家都能了解你的思想,了解你即将对软件作出的修改,这样能尽可能的减少在开发过程中可能出现的冲突,提高开发效率。同时你也能够在和成员的交流中发现自己之前设计的不足,完善你的设计。慎用锁定功能 在项目中要慎用锁定的功能,在你锁定了一个文件之后别人就无法继续修改提交该文件,虽然可以减少冲突的发生率,但是可能会影响项目组中其他人员的工作。平时只有在编辑那些无法合并的文件(例如图片文件,flash文件等)时,才适当的采用锁定操作。
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 济宁市2024-2025学年八年级上学期语文期中测试试卷
- 高速公路档案培训课件
- 高血压因素课件
- 高能相机基础知识培训课件
- 建设工程压覆矿产资源评估服务合同
- QMS考试试题及答案
- 电网知识新员工培训课件
- 【Nox聚星】2025年欧洲网红营销生态报告
- 高考加油课件app
- 电瓶车充电安全知识培训课件
- CJT 409-2012 玻璃钢化粪池技术要求
- YD-T 4339-2023 5G移动通信网能力开放(NEF)总体技术要求
- 《克雷洛夫寓言》阅读手册寒假阅读作业设计
- 对外汉语教学教案设计及板书省公开课金奖全国赛课一等奖微课获奖课件
- 公司三门峡市芦花岭铝土矿矿山地质环境保护与土地复垦方案
- 危险品企业安全风险隐患排查治理手册
- 物业小区多种经营创收方案及应用
- 《建筑装饰设计收费》
- 设备预防性维修管理
- 去极端化自我剖析
- 生殖伦理培训课件
评论
0/150
提交评论