版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、版本管理理危机 起始阶阶段: 项目的的开始,项目组组只有从从第三方方获取的的类库、具备编编程知识识的程序序员和PPM(项项目经理理)。由由于成员员数量不不少,使使用简单单共享方方式的版版本管理理往往难难以胜任任,某些些人往往往会因为为新功能能的需要要或者无无意将一一些代码码改得面面目全非非,无从从追踪。我们需需要一个个简单的的版本管管理工具具,比如如Vissuall Soourcce SSafee,每个个人在修修改代码码之前要要求先将将代码文文件标记记为“检检出”状状态,每每一次“检入”代码都都在服务务器上生生成一个个新的版版本。好好了,所所有的代代码都有有了版本本记录,我们可可以查看看代码的
2、的演进过过程,对对任何两两个版本本进行比比较,也也可以轻轻松的获获取到早早先的版版本。 开始迭迭代: 由于客客户的要要求,项项目开始始进行简简单的迭迭代。PPM要求求所有人人员检入入可以的的代码。然后开开始执行行构建。第一次次全部构构建的过过程可能能并不顺顺利,因因为有人人修改了了A组件件导致了了依赖AA组件的的B组件件不能正正常工作作了。当当然这个个不难解解决,我我们需要要对成员员进行培培训,要要求每个个人在检检入代码码前保证证所有的的构建都都是成功功的。这这很凑效效,虽然然每次构构建要耗耗费不少少时间。编译的的错误很很容易发发现,但但是逻辑辑的错误误却没有有那么简简单了。不过,到现在在为止
3、,这个并并不太重重要,毕毕竟项目目刚刚开开始迭代代,在给给客户演演示的时时候偶尔尔崩溃也也是可以以忍受的的。 版本建建立: 随着项项目第一一次交付付期的临临近,PPM决定定停止新新特性的的开发,确定11.0版版本。并并且将这这个版本本发布SSIT(系统集集成)。刚刚SSIT测测试的时时候,大大家都忙忙于修改改自己的的代码中中的,忙忙得不亦亦乐乎。慢慢的的,BUUG数量量曲线开开始趋于于平滑。很多人人开始觉觉的可以以将当前前版本发发布,从从而可以以投入精精力进行行新特性性的开发发了。PPM也这这么认为为,因为为从需求求跟踪矩矩阵的情情况看,还有许许多的工工作量,客户会会要求在在第二次次交付(2.
4、00.x版版本)的的时候看看到剩下下的需求求都已经经实现。为了不不影响11.0.x版本本的构建建,PMM下令所所有人可可以在本本地编辑辑代码以以添加新新特性,但是不不得检入入版本机机,唯一一允许被被检入版版本机的的是修改改BUGG的代码码。这在在一段时时间里看看起来工工作得不不错,知知道有一一天,小小王发现现他在 a.jjavaa 文件件中添加加和编辑辑了许多多的新特特性相关关的代码码,但是是 现在在要命的的是发现现了一个个跟 aa.jaava 相关的的BUGG。冥思思苦想,小王决决定将aa.jaava先先备份起起来,然然后撤销销检出,ok,回到11.0.x的代代码了,在a.javva中修修改
5、了一一通,检检入了,很幸运运,居然然没有引引起问题题。小王王开始将将原先备备份的 a.jjavaa和修改改过BUUG的aa.jaava中中的更改改进行合合并,合合并的结结果将产产生一个个新的aa.jaava文文件,这这个文件件没有了了已经发发现的BBUG,而且包包含了新新特性的的代码。由于小小王是高高手,所所编写的的代码遵遵从了SSRP(单一职职责原则则),所所以小王王的合并并并没有有耗费缩缩少时间间。但是是接下来来的时间间里,小小王又发发现b.javva,cc.jaava,d.jjavaax.javva需要要进行这这种手工工的合并并,每一一次合并并,他都都要将文文件预先先备份起起来。而而且,
6、因因为在11.0.x稳定定运行之之前,小小王不得得检入自自己的代代码,因因此小王王担心,如果自自己的硬硬盘崩溃溃,小王王也为不不能够使使用人编编写的新新特性代代码而感感到无比比郁闷。PM也也意识到到这种情情况,在在一个晚晚上的权权衡之后后,PMM决定在在版本服服务器上上建立了了2.00.x的的目录,将1.0.xx的代码码拷贝到到这里来来。Okk,所有有的新特特性的开开发在22.0.x中进进行,所所有的BBUG修修改在11.0.x和22.0.x中同同时进行行。这真真是一个个不错的的主意。但是,过不了了多久,项目组组就被频频繁的拷拷贝粘贴贴折腾的的死去活活来,代代码的修修改没有有办法被被有效跟跟踪
7、则更更是让人人伤透了了脑筋。典型的版版本管理理难题 看完了了上篇,我们对对于多分分支开发发容易产产生的问问题应该该有了一一些基本本的了解解吧。事事实上,通常,并行开开发的版版本管理理面临以以下几个个典型的的难题: 如如何保证证新版本本开发与与BuggFixx同时进进行?也也就是要要求修改改过的BBUG不不能存在在于新版版本中。 如如何保证证两个新新版本并并行开发发?可能能的情况况是两个个完全不不同的版版本,或或者一个个是另外外一个基基础。 如何何保证版版本的发发布不受受开发人人员无意意的代码码检入影影响? 不再再拐弯抹抹角了,解决这这三个难难题的答答案是使使用分支支(这里里涉及到到一个著著名的
8、版版本管理理工具CCleaarCaase,分支正正是其中中的重要要工具和和概念)。要理理解分支支必须同同时理解解的术语语,比如如标签、视图。本文不不打算详详细地描描述基础础的概念念,相关关的概念念可以参参考CllearrCasse的文文档。图1 上面是是一棵版版本树,形象地地记载了了一个文文件的版版本变化化情况。 其中中,1、2、33是不同同的版本本;Maain、Verr2.00就是分分支;RReleeasee10223和VVer22.0BBegiin则是是标签,标签就就像是打打在代码码版本上上的标记记;视图图就是由由分支类类型、标标签名称称、获取取规则动动态的决决定的代代码横截截面。可可以建
9、立立Maiin分支支的视图图,在这这个视图图中我们们就看不不到Veer2.0分支支中的任任何代码码修改;也可以以建立VVer22.0分分支的视视图,在在这个视视图中我我们可以以看到VVer22.0分分支的最最新代码码和未在在Verr2.00分支中中产生修修改的MMainn分支中中位于VVer22.0BBegiin标签签处的代代码。 开发人人员总是是习惯工工作于一一个视图图上。那那看看解解决第一一个问题题的办法法。图2 1. 建立用用于修改改Bugg的分支支视图,在此视视图上进进行修改改。 22. 将将在BuugFiix上修修改的代代码合并并到主分分支中,合并产产生新的的版本33,移动动Verr
10、2.00Beggin标标签到版版本3,Verr2.00分支自自动获取取到修复复Bugg以后的的代码,同时,主分支支上的BBug也也得到了了修正。 3. 如果果此时代代码已经经在Veer2.0上发发生了变变化,则则需要执执行另外外一个合合并,将将更改合合并到VVer22.0中中。但幸幸运的是是,大多多数时候候不会在在BuggFixx之前修修改Veer2.0的代代码。 这样做做我们至至少收获获了几个个附加的的好处: 我我们获得得了从MMainn分支发发布稳定定版本的的能力; 我我们获得得了从VVer22.0分分支发布布最新预预览版的的能力; 开开发人员员的检入入检出不不影响版版本发布布; 版本管管
11、理员可可以对MMainn分支进进行锁定定等控制制,防止止其他人人员越权权或者意意外的修修改Maain分分支的代代码。版本的强强制控制制和版本本合并 版本需需要强制制控制的的几种常常见场景景: 11. 要要转产或或者上市市了,不不希望开开发者随随意的代代码检入入影响到到产品的的质量和和稳定性性。 22. 已已经转产产了,希希望控制制Bugg的修改改,不希希望开发发者随意意的代码码检入影影响到补补丁(包包)的发发布。 版本强强制控制制的手段段包括: 1. 将需需要保护护的分支支锁定(仅允许许版本管管理员修修改),打上RReleeasee标签。 2. 让开开发者在在以Reeleaase标标签为基基线
12、的分分支上进进行开发发。 33. 登登记开发发者在以以Relleasse标签签为基线线的分支支上的代代码修改改动作。 4. 在以以Relleasse标签签为基线线的分支支上发布布版本进进行集成成测试。 5. 对于于集成测测试通过过的代码码修改,通过版版本合并并手段合合并到被被保护的的分支上上。 上上面提到到了版本本合并。事实上上,版本本合并也也有如下下的几种种常见情情景: 1. 修改了了Bugg ,需需要合并并到基线线版本中中,以便便可以发发布稳定定版本。图3 2. 修改了了Bugg,需要要合并到到其他正正在开发发新功能能的代码码中。图4 3. 修改了了Bugg,导致致基线发发生改变变,希望望
13、将改变变体现到到已经发发生了改改变的22.0版版本中。图5 4. 1.11版本开开发完成成,1.0版不不再维护护,希望望将1.1版本本合并到到基线版版本中,作为以以后开发发新版本本的基础础.图6流动的基基线 基线所有有代码起起始版本本的集合合。如果果没有并并行开发发,基线线也许就就是版本本机上的的一个简简单文件件夹。如如果进行行并行开开发,那那么基线线就是具具有了指指定标签签的版本本的集合合。 在在进行并并行开发发的时候候,我们们希望基基线是流流动的,会随着着我们的的期望变变化。比比如,我我们在11.1版版本捉虫虫的时候候开始了了2.00版本的的开发,我们希希望2.0的起起始版本本保持与与1.
14、11的最终终版本一一致。这这里基于于一点假假设,假假设2.0版本本不回全全面改写写1.11版本的的代码,而是小小部分的的改动。这种假假设依赖赖于良好好的设计计。在扩扩展功能能的时候候,对原原有代码码的改动动尽量少少。假设设我们有有A1-A100共100个文件件,在22.0版版本中,为了增增加新的的功能,我们改改动了AA9,AA10两两个文件件,在11.1版版Preevieew以后后,1.1版本本中因为为修改BBug,又改动动了A88,A99两个文文件。我我们要使使2.00版本的的初始代代码包含含1.11版本的的最总代代码,我我们需要要做的事事情就是是将A88按照上上篇所介介绍的第第一种合合并场
15、景景进行合合并,即即合并到到基线中中(简单单的移动动基线标标签),而A99文件,则除了了要合并并到基线线中意外外,还要要进行上上篇所介介绍的的的第三种种场景的的合并,即将基基线的变变化合并并到已经经发生改改变的22.0版版本中(移动基基线标签签并进行行合并)。通常常,基线线变更涉涉及的文文件数应应该尽量量少。 这就是是流动的的基线。因基线线的变更更需要许许多人工工判断的的介入,所以基基线应该该是稳定定经受考考验的版版本。我我们要保保证基线线的稳定定性,不不是所有有的人都都可以随随意改变变基线,基线也也不是每每时每刻刻不断的的变化(上篇已已经介绍绍了版本本的强制制控制)。事实实上,基基线的变变化越少少越好。通常基基线发生生变化也也存在常常见的场场景。 1. 1.11版本PPrevvieww。如果果1.11版本是是在分支支上进行行开发的的,那么么VM希希望将分分支上的的代码完完全合并并到主分分支上,以避免免开发者者的代码码检入影影响版本本的稳定定性和分分支的长长期存在在对于版版本服务务器性能能的影响响
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025浙江省交投地产集团有限公司招聘9人笔试历年参考题库附带答案详解
- 2025江西赣州市国有企业组团引才(兰州站)背景调查及人员笔试历年参考题库附带答案详解
- 2025江西南昌市政公用集团有限公司招聘66人笔试历年参考题库附带答案详解
- 2025江苏常州新运城市发展集团有限公司人才招聘笔试历年参考题库附带答案详解
- 2025广东韶关市曲江区国有资产投资经营有限公司人才招聘1人笔试历年参考题库附带答案详解
- 2025广东南粤集团有限公司高校毕业生招聘61人笔试历年参考题库附带答案详解
- 2025年6月山东临沂高新控股集团有限公司三级子公司招聘管理人员拟聘用人员笔试历年参考题库附带答案详解
- 2025山东济南历下城市发展集团有限公司第一批次人才猎聘3人笔试历年参考题库附带答案详解
- 2025安徽省旌德县某县属国有控股企业招聘岗位调整人员比例笔试历年参考题库附带答案详解
- 培训学样退课延课制度
- 钻井工程施工进度计划安排及其保证措施
- 管培生培训课件
- 送货方案模板(3篇)
- 梗阻性黄疸手术麻醉管理要点
- 学前教育论文格式模板
- 架空输电线路建设关键环节的质量控制与验收标准
- 民用机场场道工程预算定额
- 重生之我在古代当皇帝-高二上学期自律主题班会课件
- 膀胱切开取石术护理查房
- 混凝土试块标准养护及制作方案
- GB/T 45355-2025无压埋地排污、排水用聚乙烯(PE)管道系统
评论
0/150
提交评论