《SVN宇宙版教程》:第八章 Subclipse核心技能之分支与合并

第八章 Subclipse核心技能之分支与合并

导言:

分支与合并在Subclipse也存在,本章将Subclipse插件中分支与合并操作界面的主要功能进行了详细的讲解,并对合并过程中容易出现的冲突也有非常细致的解答,针对不同的情况来进行不同的处理,可以说,只要使用到SVN就会遇到分支与合并,所以掌握本章节是提高软件开发效率的重要技能点。

8.1 使用分支与标记功能

    插件Subclipse也支持创建分支的功能,由于整合了MyEclipse工具,则在使用上也更加方便简单。

8.1.1 在MyEclipse工具中创建分支的实验

Step01:创建全新的实验仓库,名称是b,然后在MyEclipse中创建web项目b,然后将web项目b关联仓库b,再将默认结构的web项目提交到b仓库中,提交后的效果如图8.1所示。

图8.1 项目b成功提交到仓库b中Revision值是2

 

    Step02:在src中添加A.java文件,并提交如图8.2所示。

图8.2 创建A.java文件并提交Revision值是3

 

    Step03:在src中更改A.java文件,并提交如图8.3所示。

图8.3 更改A.java文件并提交Revision值是4

 

    Step04:对b项目调用“分支/标记”菜单,如图8.4所示。

图8.4 调用分支/标记菜单

 

    Step05:弹出界面如图8.5所示。

图8.5 配置存放分支仓库的路径

 

    Step06:单击Next按钮继续操作,出现界面如图8.6所示。

图8.6 用最新版创建分支

 

    Step07:单击Next按钮出现界面如图8.7所示。

图8.7 不输入注释及不切换路径

 

    Step08:单击Finish按钮完成分支的创建,控制台打印的效果如图8.8所示。

图8.8 控制台输出的日志信息

 

    Step09:在b仓库中可以看到分支b1成功被创建,如图8.9所示。

图8.9 分支b1成功被创建

 

8.1.2 Create any intermediate folders that are missing

    Step01:再次对web项目b调用“分支/标记”菜单,弹出界面如图8.10所示。

图8.10 将分支创建到不存的文件夹b2/b22中

 

    Step02:连续单击2次Next按钮后再单击Finish按钮出现错误提示,效果如图8.11所示。

图8.11 路径不存在报异常

 

如果想在创建分支时自动创建b2/b22文件夹,就可以将“Create any intermediate folders that are missing”选项复选。

    Step03:再次对web项目b调用“分支/标记”菜单,弹出界面如图8.12所示。

图8.12 将Create any intermediate folders that are missing选项复选

 

    Step04:连续单击2次Next按钮后再单击Finish按钮出现成功创建分支的提示,效果如图8.13所示。

图8.13 控制台输出日志信息

 

    Step05:仓库b中成功创建分支如图8.14所示。

图8.14 成功创建分支

 

8.1.3 指定资源库中的修订版选项

    Step01:继续对web项目b创建分支,效果如图8.15所示。

图8.15 继续创建分支

 

    Step02:单击Next按钮出现创建分支版本的界面如图8.16所示。

图8.16 默认使用最新版本

 

    Step03:在前面的实验中都是使用最新版来创建分支,也就是选择“HEAD修订版”,所以分支中的内容也是最新版,效果如图8.17所示。

图8.17 分支中的内容是最新版

 

    Step04:那么在此实验中不再使用“HEAD修订版”选项,而是指定使用Revision是3的版本来创建分支,配置如图8.18所示。

图8.18 使用Revision版本为3来创建分支

 

    Step05:单击Next按钮后继续单击Finish完成Revision值是3的分支创建,效果如图8.19所示。

图8.19 成功创建Revision是3的分支

 

8.1.4 工作复本选项

   Step01:在b项目的WebRoot文件夹中创建2个文件夹及2个txt文本文件,对其中的1个文件夹及1个txt文本文件调用“添加至版本控制”菜单而使这2个资源呈Add添加状态,调用菜单如图8.20所示。

图8.20 对2个资源调用添加至版本控制菜单

 

    Step02:呈Add状态的文件夹及文件的图标变成加号,效果如图8.21所示。

图8.21 有2个资源呈Add添加状态

 

    Step03:继续更改A.java文件但不提交,效果如图8.22所示。

图8.22 更改A.java文件但不提交

 

    Step04:现在web项目b中有add状态的资源,无版本的资源及被更改但并未提交的资源,下一步对b项目创建分支,配置界面如图8.23所示。

图8.23 在b4中存放分支文件

 

    Step05:单击Next按钮,选择工作副本选项,如图8.24所示。

图8.24 选择工作副本选项

 

    Step06:单击Next按钮出现界面如图8.25所示。

图8.25 默认配置即可

 

    Step07:单击Finish按钮后的控制台打印信息如图8.26所示。

图8.26 成功创建分支的日志信息

 

    Step08:分支仓库b4中WebRoot的内容如图8.27所示。

图8.27 分支仓库b4中WebRoot的内容

 

    Step09:从仓库中的内容来看,无版本的资源并未添加到b4分支仓库中,而A.java文件内容如图8.28所示。

图8.28 虽然未提交但也被放入分支中了

 

8.1.5 切换工作复本为新的分支/标记

选项“切换工作复本为新的分支/标记”的作用是在创建完分支后是否将MyEclipse中的项目所关联的路径切换到分支的路径中,先来看看b项目现在所关联仓库的路径如图8.29所示。

图8.29 项目b关联的路径是trunk

 

    虽然现在b项目中的资源类型种类繁多,但并不影响“切换工作复本为新的分支/标记”选项的测试,效果如图8.30所示。

图8.30 资源类型种类繁多的b项目

 

    Step01:继续操作,再对b项目创建分支,配置界面如图8.31所示。

图8.31 再创建分支

 

    Step02:单击Next按钮选择最新版,效果如图8.32所示。

图8.32 选择最新版

 

    Step03:再单击Next按钮,对“切换工作复本为新的分支/标记”选项复选,效果如图8.33所示。

图8.33 将切换工作复本为新的分支/标记选项复选

 

    Step04:直接单击Finish按钮完成分支的创建,控制台输出的日志信息如图8.34所示。

图8.34 不仅创建分支而且还switch切换了关联路径

 

    Step05:分支仓库b5成功创建,效果如图8.35所示。

图8.35 分支仓库b5成功创建

 

    Step06:最为关键的步骤是查看b项目所关联的路径,如图8.36所示。

图8.36 关联的路径被切换到分支b5中

 

8.2 使用合并功能

插件Subclipse支持对主线和分支的相互合并工作,在功能及UI操作界面上也与TortoiseSVN相似。

8.2.1 不是任意环境都可以进行合并操作

    Step01:继续使用前面章节的实验环境,对项目b调用“合并”菜单,弹出界面如图8.37所示。

图8.37 调用合并菜单

 

    Step02:弹出界面如图8.38所示。

图8.38 选择第1项

 

    Step03:单击Next按钮出现界面如图8.39所示。

图8.39 合并的环境未准备好

 

    Step04:从窗口中可以发现有一个“减号”的图标,从其右边的提示来看,是因为b项目中有没有提交的修改,可以单击“Commit”链接进行提交,效果如图8.40所示。

图8.40 显示提交界面但并不提交单击Cancel按钮

 

    Step05:还可以单击“revert”链接还原修改,如图8.41所示。

图8.41 显示还原界面但并不还原单击Cancel按钮

 

    Step06:环境没有准备好是不能进行合并的,下方的Next按钮都为屏蔽的状态,如图8.42所示。

图8.42 按钮Next和Finish呈屏蔽状态

 

单击Cancel按钮取消合并。

在Subclipse中合并操作对环境的要求比较严谨。

8.2.2 Merge a range of revisions选项

与合并Merge有关的Merge range of revisions选项的作用可以将主线trunk(分支branches)多个revision版本中的内容合并到分支branches(主线trunk)中。在使用Merge range of revisions选项的过程中可以选择revision版本来进行合并,这是Merge range of revisions选项的特色。

    Step01:在此步骤中首先创建实验用的环境,创建名称为test的仓库,然后在MyEclipse中创建名称为test的web项目,然后将test项目关联test仓库,如图8.43所示。

图8.43 将test项目存入trunk主线文件夹中

 

    Step02:项目test与test仓库关联成功后,将test项目提交到仓库中,提交后的Revision值是2,效果如图8.44所示。

图8.44 成功提交test项目到test仓库中Revision值是2

 

    Step03:在test项目中创建abc.txt文件更改内容并提交,效果如图8.45所示。

图8.45 提交abc.txt后Revision值是3

 

    Step04:然后对test项目创建分支,配置如图8.46所示。

图8.46 分支存储到testA文件夹中

 

    Step05:单击Next按钮,使用最新版创建分支,如图8.47所示。

图8.47 使用最新版创建分支

 

    Step06:单击Next按钮继续配置,如图8.48所示。

图8.48 无注释无切换路径

 

    Step07:单击Finish按钮完成分支testA的创建,效果如图8.49所示。

图8.49 成功创建分支testA

 

Step08:再启动一个新的MyEclipse软件,别名为MyEclipse2,下一步要在MyEclipse2软件中将仓库testA直接导入到MyEclipse2中,先单击Import菜单如图8.50所示。

图8.50 单击Import菜单

 

    Step09:弹出界面如图8.51所示。

图8.51 选择从SVN检出项目选项

 

    Step10:单击Next按钮出现界面如图8.52所示。

图8.52 选择使用现有的资源库位置选项

 

    Step11:单击Next按钮出现界面如图8.53所示。

图8.53 选择分支项目根目录testA

 

    Step12:单击Next按钮出现界面如图8.54所示。

图8.54 配置检出选项为默认即可

 

    Step13:单击Next按钮出现界面如图8.55所示。

图8.55 使用a2工作空间

 

    Step14:单击Finish按钮后MyEclipse2中出现test项目,效果如图8.56所示。

图8.56 MyEclipse2中出现test项目成功从svn仓库中导入

 

    Step15:注意:为了后面的实验能正常的进行,现在需要对环境保留一个“快照”,将仓库test及MyEclipse1中的项目和MyEclipse2中的项目进行备份,效果如图8.57所示。

图8.57 快照保留到新建文件夹中

 

8.2.2.1 主线不更改分支更改-将分支合并到主线

现在开始进入正题:主线不更改分支更改-将分支合并到主线。

Step01:继续操作,将MyEclipse2中的abc.txt代码进行更改并提交,效果如图8.58所示。

图8.58 软件MyEclipse2中的内容更改后再提交Revision值是5

 

这时MyEclipse1中的abc.txt还是旧内容,所以想将具有新内容的分支的abc.txt文件合并到MyEclipse1中的abc.txt,也就是将改变新内容的分支合并到旧版本的主线中。

Step02:在MyEclipse1中对abc.txt调用“合并”菜单,如图8.59所示。

图8.59 在MyEclipse1中对abc.txt调用合并菜单

 

    Step03:弹出界面如图8.60所示。

图8.60 选择第一项Merge a range of revisions

 

    Step04:单击Next按钮出现界面如图8.61所示。

图8.61 设置Merge from及选择All eligible revisions

 

    选择All eligible revisions的含义是将分支中未曾合并的所有版本的更改合并到主线中,选择All eligible revisions也是在合并中最为常用的,使用率非常高。

    Step05:单击Next按钮出现界面如图8.62所示。

图8.62 冲突的处理方式默认即可

 

    Step06:单击Finish按钮成功合并,效果如图8.63所示。

图8.63 成功合并

 

    Step07:合并后MyEclipse1中的abc.txt内容和分支中的内容一致了,效果如图8.64所示。

图8.64 成功将分支合并到主线

 

8.2.2.2 主线更改分支不更改-将分支合并到主线

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

    Step02:将MyEclipse1中的abc.txt更改内容并提交,效果如图8.65所示。

图8.65 提交后Revision版本是5

 

    现在环境是,主线仓库test中的内容是最新版,分支仓库testA中的内容是旧版,现在要将旧版分支atestA中的内容合并到MyEclipse1中的主线工作副本中,来看看是什么结果。

    Step03:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.66所示。

图8.66 旧的不能覆盖新的

 

    Step04:开发工具MyEclipse1中的内容还是保持旧值,效果如图8.67所示。

图8.67 MyEclipse1中的内容还是保持旧值

 

8.2.2.3 主线更改分支也更改-将分支合并到主线

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:然后在MyEclipse1软件中更改abc.txt内容如图8.68所示。

图8.68 更改第2-3-5-6-8行代码并提交Revision值是5

 

    Step03:再回到MyEclipse2中,更改abc.txt内容如图8.69所示。

图8.69 也更改第2-3-5-6-8行代码保存并提交Revision值是6

 

    Step04:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.70所示。

图8.70 需要解决冲突

 

8.2.2.3.1 Mark as conflicted.I will deal with it later.

    Step01:选项“Mark as conflicted.I will deal with it later.”的作用是将冲突的状态保持下去,有待后面再解决,选择并单击OK按钮后的效果如图8.71所示。

图8.71 项目呈冲突的状态

 

    Step02:解决冲突有很多种,在前面的章节中使用的是“编辑冲突”菜单,对abc.txt文件调用“编辑冲突”菜单如图8.72所示。

图8.72 解决冲突可以使用编辑冲突菜单

 

    Step03:单击“编辑冲突”菜单后的效果如图8.73所示。

图8.73 可以手动编辑冲突

 

当然在此步骤中并不手动进行编辑,取消这个操作并关闭“Conflicts on abc.txt”窗口。

Step04:处理冲突还可以使用“标记为解决”菜单,效果如图8.74所示。

图8.74 使用标记为解决菜单来处理冲突

 

    Step05:单击“标记为解决”菜单后弹出界面如图8.75所示。

图8.75 用什么方式来处理冲突此界面前面章节有介绍

 

当然在此步骤中也并不进行冲突的处理,取消这个操作并关闭“标记为解决”窗口。

    在本小节中,通过使用“Mark as conflicted.I will deal with it later.”选项来保持冲突的状态,可以在后面的步骤中对项目中的冲突进行不同方式的解决。

8.2.2.3.2 Resolve the conflict by using my version of the entire file.

选项“Resolve the conflict by using my version of the entire file.”的功能是一旦本地和服务器产生了冲突,则一概使用本地版本的内容。

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:然后在MyEclipse2软件中更改abc.txt内容如图8.76所示。

图8.76 更改第2-3-5行代码并提交Revision值是5

 

    Step03:再回到MyEclipse1中,更改abc.txt内容如图8.77所示。

图8.77 更改第5-8行代码保存并提交Revision值是6

 

    Step04:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.78所示。

图8.78 完全使用我的完整文件

 

    Step05:单击OK按钮后的效果如图8.79所示

图8.79 成功更新未出错

 

    Step06:MyEclipse1中的内容未改变,效果如图8.80所示。

 

图8.80 内容未更改

 

8.2.2.3.3 Resolve the conflict by using the incoming version of the entire file.

选项“Resolve the conflict by using the incoming version of the entire file.”的功能是一旦本地和服务器产生了冲突,则一概使用服务器版本的内容。

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:然后在MyEclipse2软件中更改abc.txt内容如图8.81所示。

图8.81 更改第2-3-5行代码并提交Revision值是5

 

    Step03:再回到MyEclipse1中,更改abc.txt内容如图8.82所示。

图8.82 更改第5-7-8行代码保存并提交Revision值是6

 

    Step04:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.83所示。

图8.83 完全使用服务器端的完整文件

 

    Step05:单击OK按钮后的效果如图8.84所示

图8.84 成功更新未出错

 

    Step06:MyEclipse1中abc.txt全部内容被替换成服务器端分支中abc.txt的内容,效果如图8.85所示。

 

图8.85 被服务器端分支中的abc.txt内容所替换

 

8.2.2.3.4 Resolve conflicts in local file with my changes.

选项“Resolve conflicts in local file with my changes.”的作用是当本地与服务器端内容发生冲突时,使用我的版本,如果本地某些内容没有发生冲突,则使用服务器端中的内容进行Update,如果本地和服务器中的内容都没有更改,则保持不变。

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:然后在MyEclipse2软件中更改abc.txt内容如图8.86所示。

图8.86 更改第2-3-5行代码并提交Revision值是5

 

    Step03:再回到MyEclipse1中,更改abc.txt内容如图8.87所示。

图8.87 更改第5-8行代码保存并提交Revision值是6

 

    Step04:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.88所示。

图8.88 完全使用服务器端的完整文件

 

    Step05:单击OK按钮后的效果如图8.89所示

图8.89 成功更新未出错

 

    Step06:合并后的结果如图8.90所示。

图8.90 合并的结果

 

    从执行的结果来看,使用“Resolve conflicts in local file with my changes.”选项可以将本地和服务器都没有改变的内容保持不变,而本地和服务器冲突的内容使用本地的版本,如果服务器的版本内容比本地的要新,则使用服务器中的内容。

8.2.2.3.5 Resolve conflicts in local file with changes from incoming file.

选项“Resolve conflicts in local file with changes from incoming file.”作用是当本地与服务器端内容发生冲突时,使用服务器的版本,如果本地某些内容没有发生冲突,则使用服务器端中的内容进行Update,如果本地和服务器中的内容都没有更改,则保持不变。

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:然后在MyEclipse2软件中更改abc.txt内容如图8.91所示。

图8.91 更改第2-3-5行代码并提交Revision值是5

 

    Step03:再回到MyEclipse1中,更改abc.txt内容如图8.92所示。

图8.92 更改第5-7-8行代码保存并提交Revision值是6

 

    Step04:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.93所示。

图8.93 冲突的位置使用服务器端的版本

 

    Step05:单击OK按钮后的效果如图8.94所示

图8.94 成功更新未出错

 

    Step06:合并后的结果如图8.95所示。

图8.95 合并的结果

 

    从执行的结果来看,使用“Resolve conflicts in local file with changes from incoming file.”选项可以将本地和服务器都没有改变的内容保持不变,而本地和服务器冲突的内容使用服务器端的版本,如果服务器的版本内容比本地的要新,则使用服务器中的内容。

8.2.2.3.6 Let me edit the file with conflict markers inserted.

    选项“Let me edit the file with conflict markers inserted.”的作用是在发生冲突时,先不更改原始的文件内容,而是新建1个txt文件,在此txt文件中将冲突的位置用标记进行显示,有助于分析冲突的详细内容。

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:然后在MyEclipse2软件中更改abc.txt内容如图8.96所示。

图8.96 更改第2-3-5-6行代码并提交Revision值是5

 

    Step03:再回到MyEclipse1中,更改abc.txt内容如图8.97所示。

图8.97 更改第5-6-8-9行代码保存并提交Revision值是6

 

    Step04:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.98所示。

图8.98 分析冲突并不更改原始文件

 

    Step05:单击OK按钮后的效果如图8.99所示

图8.99 新建1个txt文件

 

    从运行的结果来看,在新建的txt文件中标明了哪些位置发生发冲突。

8.2.2.3.7 Launch a graphical conflict resolution editor.

    选项“Launch a graphical conflict resolution editor.”的作用是在发生冲突时启动一个窗口,在此窗口中可以以图形化的方式来编辑解决冲突。

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:然后在MyEclipse2软件中更改abc.txt内容如图8.100所示。

图8.100 更改第2-3-5-6行代码并提交Revision值是5

 

    Step03:再回到MyEclipse1中,更改abc.txt内容如图8.101所示。

图8.101 更改第5-6-8-9行代码保存并提交Revision值是6

 

    Step04:对MyEclipse1中的abc.txt文件调用“合并”菜单,还是选择选项,单击Next按钮继续选择选项,在默认的配置下单击Finish按钮弹出窗口如图8.102所示。

图8.102 分析冲突并不更改原始文件

 

    Step05:单击OK按钮后的效果如图8.103所示

图8.103 启动图形冲突解决窗口

 

发生冲突的位置是在第5和第6行,边框也呈红色。第2第3行边框呈蓝色,而第8第9行边框呈灰色。

Step06:下一步就要解决冲突,编辑左边代码内容如图8.104所示。

图8.104 编辑内容并保存

 

    Step07:在关闭“Conflicts on abc.txt”窗口时弹出界面如图8.105所示。

图8.105 选择Yes选项含义是解决了所有冲突

 

    Step08:单击OK按钮后的效果如图8.106所示。

图8.106 成功更新

 

    Step09:MyEclipse1中的abc.txt内容如图8.107所示。

图8.107 MyEclipse1中的abc.txt内容

 

8.2.2.4 不重复测试其它情况的说明

在前面的步骤中通过使用Merge a range of revisions选项来实验3种情况:

(1)主线不更改分支更改-将分支合并到主线

(2)主线更改分支不更改-将分支合并到主线

(3)主线更改分支也更改-将分支合并到主线

还有另外3种情况的实验步骤也大同小异,在此请读者自己测试:

(4)主线不更改分支更改-将主线合并到分支

(5)主线更改分支不更改-将主线合并到分支

(6)主线更改分支也更改-将主线合并到分支

8.2.3 Reintegrate a branch选项

选项Reintegrate a branch的作用和Merge range of revisions基本是一致的,只不过不可以指定revision的版本进行合并,合并的永远都是最新版,所以此选项经常在发生Merge合并时使用。

    在合并时选择“Reintegrate a branch”选项,效果如8.108所示。

8.108 选择Reintegrate a branch选项

 

    单击Next后设置欲合并的文件地址,如8.109所示。

8.109 设置合并的文件地址

 

    在此界面中没有任何选择Revision值的选项,也就是将文件的最新版进行合并。

8.2.4 Merge two different trees选项

在合并Merge类型中有一个选项,它的作用是在合并的过程中选择主线或分支的指定revision值。

但选项“Merge two different trees”在前面的章节有所介绍,另外在实际使用中此选项应用并不多,所以在此不再重复介绍,包括下面的2个情况:

  1. 主线不更改分支更改-将分支最新revision版本合并到主线
  2. 主线不更改分支更改-将分支指定revision版本合并到主线

8.3 使用切换功能

    切换菜单的作用就是将工作副本所关联的仓库的路径进行变更,更具体的讲就是将工作副本关联到主线或将工作副本关联到分支中,所以使用它最多的情况就是在主线与分支切换时。

8.3.1 工作副本Working copy不改变仓库Repository不改变

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

    Step02:对MyEclipse1中的test调用鼠标右键的“Properties”菜单弹出界面如图8.110所示。

图8.110 MyEclipse1中的项目引用trunk文件夹

 

Step03:菜单“切换”就可以改变这个路径。

对MyEclipse1中的test项目调用“切换”菜单如图8.111所示。

图8.111 调用切换菜单

 

    Step04:弹出界面如图8.112所示。

图8.112 切换到testA路径中

 

    Step05:单击OK按钮后MyEclipse1中的test项目的关联路径改成testA了,效果如图8.113所示。

图8.113 成功切换到testA分支路径上

 

    Step06:成功切换再对MyEclipse1中的test项目调用“更新”菜单后内容并未改变,效果如图8.114所示。

图8.114 并未改变的内容

 

8.3.2 工作副本Working copy不改变仓库Repository改变

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

    Step02:更改MyEclipse2中的abc.txt内容如图8.115所示。

图8.115 MyEclipse2中的内容被更改并提交Revision值是5

 

Step03:对MyEclipse1中的test项目调用“切换”菜单成功后,MyEclipse1中的abc.txt内容如图8.116所示。

图8.116 MyEclipse1中的abc.txt内容被更新到分支testA中的最新版

 

8.3.3 工作副本Working copy改变仓库Repository不改变

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

Step02:设计实验用的环境,更改工作副本,也就是MyEclipse1中的test项目。

Step03:更改MyEclipse1中test项目的abc.txt文件内容并提交,效果如图8.117所示。

图8.117 提交MyEclipse1中test项目的abc.txt文件Revision值是5

 

Step04:继续操作,在MyEclipse1中添加2个文件夹及2个文件,并对其中的1个文件夹及1个文件调用“添加至版本控制”菜单,如图8.118所示。

图8.118 调用添加至版本控制菜单

 

    Step05:操作结束后的SVN日志如图8.119所示。

图8.119 SVN操作过程日志

 

    Step06:实验步骤止此,说明MyEclipse1中的test项目已经被更改,下面对MyEclipse1中的test项目调用切换菜单,配置如图8.120所示。

图8.120 切换界面的配置

 

    Step07:单击OK按钮后的效果如图8.121所示。

图8.121 MyEclipse1中的abc.txt被替换成了旧版本

 

    Step08:对MyEclipse1中test项目调用“提交”菜单后的效果如图8.122所示。

图8.122 新创建的4个资源将被提交

 

8.3.4 工作副本Working copy改变仓库Repository改变

    Step01:重置系统环境,删除MyEclipse1和MyEclipse2中的web项目,再将C:\svn_repository路径中的仓库test删除,然后将“subclipse合并的快照”中的内容各就各位,最后将2个项目分别导入到MyEclipse1和MyEclipse2中,然后分别对2个web项目在MyEclipse调用“更新”菜单以刷新项目的Revision版本号。

    Step02:对MyEclipse2中的abc.txt更改并提交,效果如图8.123所示。

图8.123 MyEclipse2提交后的Revision值是5

 

    Step03:对MyEclipse1中的abc.txt更改并提交,效果如图8.124所示。

图8.124 MyEclipse1提交后的Revision值是6

 

Step04:下面对MyEclipse1中的test项目调用切换菜单,配置如图8.125所示。

图8.125 切换界面的配置

 

    Step05:单击OK按钮后的MyEclipse1内容如图8.126所示。

图8.126 MyEclipse1中abc.txt内容被分支所覆盖

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值