版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、SVN分支与合并注意事项:?bra nch分支)主要用于新功能的开发?合并发生在本地working copy(工作副本),只要你不提交就不会影响到repository(版本库)?合并前一定要先update commit, 保证不会out of day,并将本地的修改保存到repository,这样当你发现合并错了可以随时还原到合并前?branch和trunk并行开发的过程中,要经常同步,将trunk的修改合并到bran ch,合并时选择Merge a range of revisio n?branch最后合并回trunk时,merge type选择Reintegrate a branch ?主
2、要步骤:建立分支check out分支在分支进行新功能开发在主干进行BUG修改每 次主干修改完BUG提交后同步修改到分支手动排除冲突提交分支代码继 续分支功能开发直到最后功能开发完整合并会主干。一、建立分支1创建bran ch在主干目录上右键,依次选择TortoiseSVN - Branch/tag,在弹出窗口的To URL中填入分支的地址,在这里目标revision选择HEAD revision,如下图所示,添加log后点击ok分支便建立了。这个操作速度非常快,新建的bran ch在repository中其实只是一个指向trunk某个revision的软连接而已,并没有真的复 制文件。2、C
3、heck out分支右键分支路径TestSVN目录选择TortoiseSVN Update即可将刚刚建立的分支下载回本地。进入分支目录下你会发现其文件结构和主干的一模一样。3、 保持分支一直都是最新版本上面建立是为了branch和trunk在独立、并行地开发。在主干进行BUG的修改,分支则进行新功能的开发。为了防止在错误”的道路上越走越远,主干所做的修改必须经常更新到分支,使新功能一直都是在最新的系统下开发的(将trunk合 并至Ubranch)。二、进行合并1将trunk中的修改同步到branch首先,在本地trunk中先updateMMZ.Lfcii.Z4:_!DRL *-FA-*EJL1
4、湘 5.fs削 j wiUu*iRWiirmwBanrwsMM * CtukwttvLfiLihr円百 J:|MM *bHJhEW-*;rnfV|iw:iL WmrEr%22 Re丹 F. i3*1 Awi HMBR Hrv VHrtoflAiVVir Mfwf鼻丹.M4 14叶 T-AiRrwi- Mdat*v Mnfldd Irnd一下,有冲突的解决冲突,保证trunk和repository已经完全同步,然后在/branches /MyProject上右键,依次选择TortoiseSVN -“Merge.,在弹出的窗口中选择第一项Merge a range of revision,这个类型
5、的Merge已经介绍得很清 楚,适用于将某个分支或主线上提交的多个revision间的变化合并到另外一个分 支上。点击Next,出现如下界面:由于是要从trunk合并到branch,理所当然这里的URL to merge from应该填trunk的路径,Revision range to merge很好理解,就是你要将trunk的哪些revision所对应的变化合并到branch中,可以是某一连串的revision,比如4-7,15-HEAD,也可以是某个单独的revision号。由于我们是经常同步的,所以一般 都只需选最近的一次修改同步起来就可以了。点击n ext后出现下图:比加.IF 曲甘
6、ftj-i*-*WI J*严uhR 弔 iri 皿 :I-Piw!sr L 士 lb 尊t- 1曲亠Iri. CJIIJI C Ma,. Ii fr.|rqTin 49.W1 Qvm IX ;HVtli iffu-ven rf 舟 HI h r Jb4 時 fh frfJ4#在这里只需保留默认设置即可。在点击Merge按钮前你可以先Test merge测试合并)一把,看成功与否,以及merge的详细信息。如果详细信息出现如下图红色字 体,证明有冲突,sJ7 ,iljf r*沪Tftarw 1-lw卄祁IJvalFwriiTfPU-F H mfafc1!屯IwAdhi litf rirs需要开发
7、人员手动去合并,排除冲突。-Jha |aCfalr r*ed iki*14 ILedt elaL MT pi点击Merge按钮后trunk所做的修改将同步到branch中,如果有冲突的会弹出如 下提示窗口。第一行的意思是以哪个版本为主,如果选择了,会忽略分支的改 动,直接同步主线的修改,建议不要使用。第二行的意思是编辑冲突,一般不可用。第三行,Resolve later稍候解决当前冲突,后面那个是稍候处理所有冲突 这里我们我们选择Resolve all later,这样就需要我们手工进行合并了。点击Resolve all lateriJMfLfciiLrtietfe LbLtrfNgie-le
8、Rj-jma之后,会在分支相应目录下面建立冲突的版本,如图:这些多出来的以.r结尾的冲突文件其实就是主干的历史修改版本,右键可以选择 用文本编辑软件打开,将冲突的相关内容手动复制到分支文件里面,然后删除这 些冲突的文件。2、 提交合并后的branch至此,branch已经完全和trunk同步,branch和trunk的代码相处很融洽,没有任 何冲突,如果branch已经开发结束,那是时候将branch合并回trunk了,当然, 如果branch还要继续开发,那你将不断地重复上面的这几个步骤。3、 将branch合并回trunk在主线的目录上右键, 依次选择TortoiseSVN - Merge
9、., 在弹出的窗口中,Merge type选择第二项Reintegrate a branch:这种类型的合并适合在分支开发结 束后将所有的改动合并回主线。点击next后出现如下窗口:在这里,From URL选择主干地址,无需选择revision号,Reintegrate上面选择 的第二项叫做复兴合并)会将branch上所有修改合并到trunk。后面的步骤和上文 第9步中的一样,不再啰嗦了。如无意外,branch将成功合并到trunk,你需要做 的只是将合并后的trunk赶紧commit,至此可以删除分支了!以下内容仅供有兴趣深究的同学查看 对svn分支合并类型和深度的理解: 合并的工作是把主干
10、或者分支上合并范围内的所有改动列出,并对比当前工作副 本的内容,由合并者手工修改冲突,然后提交到服务器的相应目录里。如果当前 工作副本是主干,则合并的范围是分支上的改动,如果工作副本是分支的,则合 并范围是主干上的改动,并且一定要注意,合并的起始位置URL一定要和当前的工作副本的URL是相同的。一、合并一个范围的版本此类型应用最为广泛, 主要是把分支中的修改合并到主干上来。 在主干上点击右 键选择合并,然后选择合并类型:合并一个范围的版本。合并的源URL填写的是要合并的分支的URL,待合并的版本范围如果为空,则指的是合并分支上所有 的版本,即自从分支创建以来到分支当前最新版本的所有演变。如果只
11、是选择其 中一个版本,或者几个版本,那么就表示只是将制定的n个版本的变化合并到主干上。如果只是选择其中一个版本,那么表示只是选择那个版本的修改,之前或 之后的修改将不被采纳。二、复兴合并复兴合并可以理解为是第一种合并类型的一种特例,在复兴合并中,主干可以理 解为是自从开创分支之后没有任何修改,而分支是经过修改的,而且合并中分支 是没有版本选择的。经过复兴合并, 分支中所有的修改都会合并到主干中, 合并 的结果将使得分支和主干一模一样,从而可以删除分支。三、合并两个不同的树此类型与前两种类型不同,第一种类型可以选择分支合并的版本,主干不能选择 版本;第二种类型是主干和分支都不能选择合并的版本;而
12、这种类型则是无论是 主干还是分支都可以选择合并的版本,即可以选择过去的一个主干版本与分支的 某个版本进行合并。合并的时候以选择的分支版本为主,如果选择的主干版本与 分支版本有不同的地方,合并时主干部分将被放弃。起始URL:选择主干目录的URL(应当和当前工作副本的URL一致, 这个是所 谓的合并点)结束URL:选择要合并的分支的URL。起始和结束的版本:一般起始版本应当找到最后一次同步时的版本,如果从没有 同步过(第一次合并),则选择创建分支时的版本,结束版本一般是最新版本, 如果你不想将某些内容合并进主干的话,也可以选择一个合并点。实例:主干A在95版本的时候创建分支B,此时两棵树都是95版
13、本1、 我在分支B上增加文件test.txt,提交。此时版本库升级到了96版本;2、 我在A上选择合并类型1,合并分支最新版本,结果是把test.txt加入A;3、 我在A上选择合并类型2,合并分支最新版本,结果同上;4、 我在A上选择合并类型3,合并分支最新版本,结果同上;5、 我在A上增加文件test2.txt,提交,此时版本库升级到了97版本;6、 我在A上选择合并类型1,合并分支最新版本,结果是把test.txt加入A;7、 我在A上选择合并类型2,合并分支最新版本,结果是把test.txt加入A;8我在A上选择合并类型3,主干选择当前97版本,合并分支最新版本,结果 是把test.t
14、xt加入A,把test2.txt从A删除;9、我在A上选择合并类型3,主干97以前的版本,合并分支最新版本,结果是把test.txt加入A,而A中保留着test2.txt。将分支合并到主干上,首先需要在主干的工作副本下进行,合并的范围是从主干 的上次合并的版本开始到分支上最新的版本结束,如果是第一次合并,则从主干 创建分支的版本开始,所以每次合并要做好说明,在日志中体现,不然忘记了下 次再合并就有点麻烦。其实,应当尽量避免一个分支合并多次,分支的作用一般 为了解决bug,旦bug对应结束了,分支的使命就结束了,以后再出现其他的 问题,应当重新建立分支,这样就不会出现多次合并的问题了。分支的合并
15、深度合并深度:一、工作副本:即你当前的工作目录,一般默认为这个选项;二、全递归:即你选择的目录的版本库,包括了其下面的子文件,子文件夹,包 括子文件夹里面的内容;三、直接子节点,包括文件夹:即你选择的目录下面的文件,文件夹,但是不包 括文件夹里面的子文件,子文件夹;四、仅文件子节点:即你选择的目录下面的文件,但不包括文件夹,当然不包括 的文件夹下面的所有内容也都不纳入合并范围;五、仅此项:没有任何合并内容。实例:1主干test文件夹下面有text.txt文件,把test文件夹创建分支test22、 在test2文件夹下面增加test21文件夹,在test21文件夹下面增加文件夹test211,
16、在test211文件夹下面增加文件test211.txt;修改test2文件夹下面的文件test.txt,增加文件test2.txt。提交3、 右键test文件夹合并test2文件夹,选择工作副本。则test文件夹中原先的test.txt文件则显示修改状态,test2.txt文件显示新增状态,文件夹test21和test211以及里面的test211.txt文件都显示为新增状态。选择将test文件夹svn还原,则新 增状态下的文件夹或者文件显示为无版本控制状态,原先的test.txt还原为常规常 态。4、 右键test文件夹合并test2文件夹,选择全递归,结果和3一样。但是我们之 前的tes
17、t文件夹和仓库上的test的内容是一致的, 如果不一致, 那么选全递归,是已仓库版本为标准。选工作副本,顾名思义,则以你本地的工作副本文件为主,分支上有而工作副本中没有的文件夹或文件则不进行比较合并。5、 右键test文件夹合并test2文件夹,选择直接子节点,包含文件夹。则test文 件夹中原先的test.txt文件显示为修改状态,test2.txt文件显示为新增状态,test21文件夹显示为新增状态,但是其里面内容则为空,那么就证明了分支中test21文件夹以下的内容并没有合并到主干test中来,合并行为只是选取了当前目录。选 择将test文件夹svn还原,则新增状态下的文件夹或者文件显示
18、为无版本控制状 态,原先的test.txt还原为常规状态。6、右键test文件夹合并test2文件夹,选择仅文件子节点。则test文件夹中原先 的test.txt文件显示为修改状态,test2.txt文件显示为新增状态,分支test2中的test21文件夹没有合并到test中来。选择将test文件夹svn还原,则新增状态下的文件显示为无版本 控制状态,原先的test.txt还原为常规状态。7、 右键test文件夹合并test2文件夹,选择仅此项。则test文件夹显示为修改状 态,但是内容没有任何改动。将test文件夹svn还原,则该文件夹显示为常规状 态。只记录合并(阻止这些版本将来被合并)选择此项意味着并没有实际的合并动作,只是在将来的合并过程中,svn将过滤掉此版本的修改动作。例如,我在合并的过程中,选择对分支的23版本只记录合并(阻止这个版本将来被合并),那么23版本并不会合并到主干中。在以后的合并中,如果选择合并分支的22到24版本,那么23版本将被忽略
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025商铺租赁合同解除协议
- 2025广告公司合同(协议)
- 技术分析报告格式范文
- 2025汽车抵押借款合同格式
- 参观实习报告范文
- 上海师范大学《公益慈善经典著作选读》2023-2024学年第一学期期末试卷
- 2025质量检验委托合同
- 调研报告格式模板范文
- 上海商学院《继电保护及二次回路》2023-2024学年第一学期期末试卷
- 学生艺术素养报告范文
- 小学一年级上册数学口算训练题
- 隧道工程工程施工风险辨识清单
- 北京市高二年级上学期期末考试语文试卷及答案(共五套)
- 传承红色基因清明缅怀先烈主题班会课件
- 2024供电所迎新年贺词
- 美容皮肤科临床诊疗指南诊疗规范2023版
- 高速公路工程建设指挥部计量支付管理办法
- 吉林省吉林市2023-2024学年高三上学期第二次模拟考试 生物 二模
- 线上房博会方案
- 2023年CNC程序工程师年度总结及下一年计划
- 成长的足迹展现独特的魅力小学四年级主题班会
评论
0/150
提交评论