第七章 Subclipse更新与深度
导言:
Subclipse插件也提供Update的功能,在本章中也会用大量的篇幅介绍Update与Depth的关系,通过阅读此章节会对它们的关系理解的更加透彻,能对Update过程中的细节把控的更加得心应手。
7.1 更新Update与Depth深度
菜单Update to Version的作用是将资源更新到指定的版本。
7.1.1 创建实验环境
Step01:创建全新的实验仓库,名称是test。
Step02:然后在MyEclipse中创建1个名称是test的web项目,并让web项目关联test仓库,关联后将空的web项目提交到test仓库中,如图7.1所示。
图7.1 将空web提交到test仓库中Revision是2
Step03:创建A1.java文件,并提交,效果如图7.2所示。
图7.2 提交A1.java文件Revision值是3
Step04:更改A1.java并添加A2.java文件,提交后的效果如图7.3所示。
图7.3 提交的Revision值是4
Step05:更改A1.java和A2.java及添加A3.java文件提交后的效果如图7.4所示。
图7.4 提交的Revision值是5
Step06:更改A3.java文件及创建B1.java文件,效果如图7.5所示。
图7.5 提交的Revision值是6
Step07:更改A3.java和B1.java及添加B2.java文件,效果如图7.6所示。
图7.6 提交的Revision值是7
Step08:更改B2.java及添加B3.java文件,效果如图7.7所示。
图7.7 提交的Revision值是8
Step09:更改B2.java及B3.java文件和删除A3文件,效果如图7.8所示。
图7.8 提交的Revision值是9
Step10:更改B2.java及B3.java文件,效果如图7.9所示。
图7.9 提交的Revision值是10
实验环境搭建完毕,请将仓库test及web项目test进行备份,在后面的实验中还会使用到。
7.1.2 对文件版本变更不影响其它文件及文件夹
现在的项目文件结构如图7.10所示。
图7.10 当前项目文件夹结构及版本号
Step01:对A1.java文件调用“Update to Version”菜单,效果如图7.11所示。
图7.11 对A1.java文件调用Update to Version菜单
Step02:设置弹出界面配置如图7.12所示。
图7.12 将A1.java文件更新到Revision值是3的版本
在“Update Resources”界面中有“Conflict handling”选项,下面有3个子选项“Text files”文本文件和“Binary files”二进制文件和“Property conflicts”属性冲突,这些选项的作用就是在Update指定到某一个版本时如果出现内容上的冲突应该如何处理,在这里都使用“Mark conflicts, let me resolve them later”选项,也就是出现冲突时保留冲突,以待在后面再解决。
Step03:单击OK按钮后的项目结构如图7.13所示。
图7.13 成功将A1.java更新到Revision是3的版本
而其它文件及文件夹的内容并没有变更,说明对文件调用“Update to Version”菜单并不影响其它文件及文件夹中的内容,仅仅对当前文件起作用。
7.1.3 对文件版本变更时深度Depth时被忽略
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,继续对A1.java文件调用“Update to Version”菜单,弹出界面配置如图7.14所示。
图7.14 将A1.java更新到Revision是4的版本
Step02:在此界面中Depth深度值选择“Fully recursive”满树更新,单击OK按钮后的项目文件夹结构如图7.15所示。
图7.15 深度值被忽略并只更新了A1.java文件
7.1.4 对文件夹设置更新深度Depth时有效
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,继续对a包调用“Update to Version”菜单,弹出界面配置如图7.16所示。
图7.16 将a包中的内容更新到Revision是4的版本
Step02:在此界面中Depth深度值选择“Fully recursive”满树更新,单击OK按钮后的项目文件夹结构如图7.17所示。
图7.17 包a中的所有内容被更新到Revision是4的版本
其实src节点或a包或WebRoot结点在硬盘中其实都是以文件夹的形式进行存在,效果如图7.18所示。
图7.18 项目在硬盘中其实就是文件夹
更新深度Depth值的设置其实和TortoiseSVN的设置与效果是一样的。
7.1.5 深度Depth值的重复研究-Working copy
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,效果如图7.19所示。
图7.19 项目整体更新到最新版
再次查看MyEclipse中的test项目在硬盘文件夹的深度属性是,说明test项目默认的更新深度值是全部更新。
Step02:对src节点调用“Update to Version”菜单,配置界面如图7.20所示。
图7.20 使用Working copy更新到Revision是4的版本
在配置界面中将Depth设置成“Working copy”含义是使用test文件夹的深度值,也就是Fully recursive,更具体来讲就是将当前操作的文件夹中的内容,也就是子或子孙内容更新到某一个版本。
Step03:单击OK按钮后的web项目文件夹结构如图7.21所示。
图7.21 全部Revision都是4
Step04:而仓库test中Revision的版本内容如图7.22所示。
图7.22 仓库中Revision和MyEclipse中的内容一致
7.1.6 深度Depth值的重复研究-Fully recursive
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,效果如图7.23所示。
图7.23 项目整体更新到最新版
Step02:对src节点调用“Update to Version”菜单,配置界面如图7.24所示。
图7.24 使用Fully recursive更新到Revision是4的版本
在配置界面中将Depth设置成“Fully recursive”含义是使用Fully recursive深度值,也就是将当前操作的文件夹中的内容(子或子孙内容)更新到某一个版本。
Step03:单击OK按钮后的web项目文件夹结构和仓库中的内容如图7.25所示。
图7.25 MyEclipse中的内容和仓库中指定版本的内容一样
7.1.7 深度Depth值的重复研究-Immediate children,including folders
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,效果如图7.26所示。
图7.26 项目整体更新到最新版
Step02:对src右键属性查看一下src的版本号,如图7.27所示。
图7.27 文件夹src是最新版Revision值是10
Step03:对src节点调用“Update to Version”菜单,配置界面如图7.28所示。
图7.28 使用Immediate children,including folders更新到Revision是4的版本
在配置界面中将Depth设置成“Immediate children,including folders”含义是将当前操作的文件夹中的子文件或子文件夹,但不包括子孙级的资源,更新到某一个版本。
Step04:单击OK按钮后src的版本号是4,如图7.29所示。
图7.29 文件夹src的版本号是4
Step05:而src的子资源a包的版本号也是4,如图7.30所示。
图7.30 src子资源a包版本也是4
Step06:但src的子孙资源b包版本号还是10,如图7.31所示。
图7.31 使用Immediate children,including folders更新时子孙资源并未受影响
7.1.8 深度Depth值的重复研究-Only file children
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,效果如图7.32所示。
图7.32 项目整体更新到最新版
Step02:对a包节点调用“Update to Version”菜单,配置界面如图7.33所示。
图7.33 使用Immediate children,including folders更新到Revision是4的版本
在配置界面中将Depth设置成“Only file children”含义是将当前操作的文件夹中的子文件,不包括子孙级的资源,更新到某一个版本。
Step03:单击OK按钮后a包中的子文件A1.java和A2.java的版本号是4,如图7.34所示。
图7.34 仅仅更新了子文件
7.1.9 深度Depth值的重复研究-Only this item
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,效果如图7.35所示。
图7.35 项目整体更新到最新版
Step02:查看一下a包的版本如图7.36所示。
图7.36 查看a包的版本是10
Step03: 对a包节点调用“Update to Version”菜单,配置界面如图7.37所示。
图7.37 使用Only this item更新到Revision是4的版本
在配置界面中将Depth设置成“Only this item”含义是将当前操作的文件夹或文件本身更新到某一个版本。
Step04:单击OK按钮后a包的版本号是4,如图7.38所示。
图7.38 包a的版本被更新为4
Step05:而b包的版本还是10,未被改变,效果如图7.39所示。
图7.39 包b的版本还是10未被改变
7.1.10 深度Depth值的重复研究-Exclude
Step01:对web项目test调用“更新”菜单,以将所有的内容更新到最新版,效果如图7.40所示。
图7.40 项目整体更新到最新版
Step02:单词Exclude是排除的含义,所以想对A2.java进行排除,对A2.java文件调用“Update to Version”菜单,配置界面如图7.41所示。
图7.41 对A2.java进行排除
Step03:单击OK按钮后A2.java文件消失了,如图7.42所示。
图7.42 文件A2.java消失了
有排除就有反排除,反排除的操作就是由桌面test文件夹对其单击右键菜单Repo-browser进入仓库浏览界面后,对A2.java文件调用“Update item to revision”菜单重新下载到本地即可。如果是使用MyEclipse工具使用“SVN检出”菜单将仓库中的内容导入到MyEclipse时,可以找到MyEclipse项目在硬盘上的文件夹,执行“Repo-browser”菜单进入,再执行“Update item to revision”菜单重新下载到本地即可。
7.1.11 选项Allow unversioned obstructions
对A2.java文件执行反排除的操作,再对web项目test调用“更新”菜单,以将所有的内容更新到最新版。
选项“Allow unversioned obstructions”的作用是如果本地有一个无版本的文件夹或文件,那么当更新时,如何对待本地的这个无版本的文件夹和文件。
7.1.11.1 选项Allow unversioned obstructions复选
Step01:继续复用前面章节中MyEclipse里面的test项目,并且将整个项目更新到最新版,效果如图7.43所示。
图7.43 更新到最新版
Step02:继续操作,将路径file:///C:/svn_repository/test/trunk导出Checkout到C:\Documents and Settings\Administrator\桌面\test22路径中,然后新开启一个新的MyEclipse,别名为MyEclipse2,将test22项目导入到MyEclipse22软件中。
注意,后面的实验有分支,所以将MyEclipse1和MyEclipse2中的项目和test仓库备份到其它位置。
Step03:然后在MyEclipse2的a包下面创建Z.java文件,效果如图7.44所示。
图7.44 在MyEclipse2的a包下面创建Z.java文件
Step04:然后将MyEclipse2中的内容进行commit提交操作,提交的结果如图7.45所示。
图7.45 成功提交MyEclipse2中的Z.java文件
Step05:然后回到MyEclipse1软件中,也在a包下创建1个名称为Z.java的文件,效果如图7.46所示。
图7.46 MyEclipse1中也创建Z.java文件
Step06:这时对MyEclipse1中的src调用“Update to Version”菜单,将src中的内容更新到最新版,配置如图7.47所示。
图7.47 选项Allow unversioned obstructions复选了
Step07:单击OK按钮后的项目文件夹结构如图7.48所示。
图7.48 复选是使用本地的版本状态为已更改
说明MyEclipse1中新建的Z.java文件使用了是“服务器端仓库中Z.java文件的状态”,而内容却是MyEclipse1中Z.java文件的内容,这和直接点击“更新”菜单带来的效果是一样的,读者可以在此做一个实验。
Step08:找到MyEclipse1软件中test项目在硬盘中存储的文件夹,然后调用“Check for modifications”菜单,弹出界面如图7.49所示。
图7.49 复选即是保留MyEclipse1中文件的内容
Step09:这时将MyEclipse1中的内容进行提交,结果如图7.50所示。
图7.50 仓库中的内容和MyEclipse1中的内容一样
7.1.11.2 选项Allow unversioned obstructions不复选-Mark conflict resolved选项
Step01:初始化环境,将备份的test项目及test仓库各就各位,然后再将项目分别导入到MyEclipse1和MyEclipse2软件中。
Step02:并且将整个项目更新到最新版,效果如图7.51所示。
图7.51 更新到最新版
Step03:在MyEclipse2的a包下面创建Z.java文件,效果如图7.52所示。
图7.52 在MyEclipse2的a包下面创建Z.java文件
Step04:然后将MyEclipse2中的内容进行commit提交操作,提交的结果如图7.53所示。
图7.53 成功提交MyEclipse2中的Z.java文件
Step05:然后回到MyEclipse1软件中,也在a包下创建1个名称为Z.java的文件,效果如图7.54所示。
图7.54 MyEclipse1中也创建Z.java文件
Step06:这时对MyEclipse1中的src调用“Update to Version”菜单,将src中的内容更新到最新版,配置如图7.55所示。
图7.55 选项Allow unversioned obstructions不复选
Step07:单击OK按钮后的项目文件夹结构如图7.56所示。
图7.56 未复选出现冲突了
Step08:现在的情况是本地有一个无版本的Z.java,而服务器中已经存在一个Z.java文件了,这时就出现冲突了,因为Subclipse不知道使用哪个版本的Z.java文件。可以找到MyEclipse1软件中test项目在硬盘中存储的文件夹,然后调用“Check for modifications”菜单,弹出界面如图7.57所示。
图7.57 出现树冲突了
Step09:有冲突就要解决,对MyEclipse1中的Z.java文件调用“标记为解决”菜单,弹出配置界面如图7.58所示。
图7.58 使用Mark conflict resolved解决冲突
Step10:使用“Mark conflict resolved”选项意味着使用MyEclipse1中的Z.java文件中的内容做为解决冲突的最终版本,单击Finish按钮后的效果如图7.59所示。
图7.59 图标变红差
Step11:再次查看MyEclipse1中的test项目的状态如图7.60所示。
图7.60 文件Z.java呈删除状态
Step12:这时将MyEclipse1中的内容进行提交,结果如图7.61所示。
图7.61 文件Z.java呈问号状态
Step13:从仓库的日志中可以发现,删除了仓库中的Z.java文件,如图7.62所示。
图7.62 将仓库Z.java文件删除了使用本地的版本
Step14:然后再次将MyEclipse1中的代码进行提交,效果如图7.63所示。
图7.63 MyEclipse1中的内容成为仓库中的最新版
通过此实验可以总结出知识点,当调用“Update to Version”菜单时Allow unversioned obstructions选项不复选,并且选择Mark conflict resolved选项时,是使用MyEclipse1本地的Z.java版本提交到仓库中。
7.1.11.3 选项Allow unversioned obstructions不复选-Revert选项
Step01:初始化环境,将备份的test项目及test仓库各就各位,然后再将项目分别导入到MyEclipse1和MyEclipse2软件中。
Step02:并且将整个项目更新到最新版,效果如图7.64所示。
图7.64 更新到最新版
Step03:在MyEclipse2的a包下面创建Z.java文件,效果如图7.65所示。
图7.65 在MyEclipse2的a包下面创建Z.java文件
Step04:然后将MyEclipse2中的内容进行commit提交操作,提交的结果如图7.66所示。
图7.66 成功提交MyEclipse2中的Z.java文件
Step05:然后回到MyEclipse1软件中,也在a包下创建1个名称为Z.java的文件,效果如图7.67所示。
图7.67 MyEclipse1中也创建Z.java文件
Step06:这时对MyEclipse1中的src调用“Update to Version”菜单,将src中的内容更新到最新版,配置如图7.68所示。
图7.68 选项Allow unversioned obstructions不复选
Step07:单击OK按钮后的项目文件夹结构如图7.69所示。
图7.69 未复选出现冲突了
Step08:现在的情况是本地有一个无版本的Z.java,而服务器中已经存在一个Z.java文件了,这时就出现冲突了,因为Subclipse不知道使用哪个版本的Z.java文件。可以找到MyEclipse1软件中test项目在硬盘中存储的文件夹,然后调用“Check for modifications”菜单,弹出界面如图7.70所示。
图7.70 出现树冲突了
Step09:有冲突就要解决,对MyEclipse1中的Z.java文件调用“标记为解决”菜单,弹出配置界面如图7.71所示。
图7.71 使用Revert选项解决冲突
Step10:使用“Revert”选项意味着使用仓库中的内容做为解决冲突的最终版本,单击Finish按钮后的效果如图7.72所示。
图7.72 MyEclipse1中的内容和仓库一样
通过此实验可以总结出知识点,当调用“Update to Version”菜单时Allow unversioned obstructions选项不复选,并且选择Revert选项时,将MyEclipse1中的内容替换成仓库中的内容。
通过此实验可以得出结论,当2个程序员A和B在同一个位置创建出相同的文件名时,当A程序员调用“更新”菜单和调用“Update to Version”菜单时Allow unversioned obstructions选项复选是一样的效果,都是将A程序员创建的文件更改成“星号*修改”状态,文件内容使用的是A程序员的内容,这将造成B程序员写的代码被完全忽略,造成代码的丢失。
那么正确的“更新到最新版代码”的做法是,调用“Update to Version”菜单时Allow unversioned obstructions选项不复选,这样会出现“双箭头”,至少给A程序员一个提示,出现了冲突,却不是A程序员创建的文件内容全部使用A和或使用B的,完全可以有机会进行手动编辑,这处也是非常重要的知识点,虽然在工作中不经常出现,但一旦出现就会造成极大的损失。
7.1.12 选项Ignore externals
选项Ignore externals的作用和在TortoiseSVN中一样,都是在更新时是否也一同更新引用仓库中的内容。
Step01:创建实验用的新仓库a和b,然后在MyEclipse中创建名称为a和b的2个web项目,在b项目中添加2个html文件,效果如图7.73所示。
图7.73 在b项目中添加文件及配置b项目到仓库
Step02:对b项目进行提交,效果如图7.74所示。
图7.74 对b项目提交后2个html文件的Revision值是2
Step03:设置a项目关联仓库,配置如图7.75所示。
图7.75 配置a项目引用仓库
Step04:项目a关联完仓库a后对名称为a的web项目进行Commit提交。
Step05:然后对a项目中的WebRoot节点调用“设置属性…”菜单如图7.76所示。
图7.76 对a项目的WebRoot结点设置属性
Step06:属性设置内容如图7.77所示。
图7.77 设置svn:externals属性
Step07:文件夹a_manager是在a项目中使用此文件夹来引用b项目b_manager文件夹中的内容,单击OK按钮后,WebRoot结点的图标变成星号,如图7.78所示。
图7.78 WebRoot文件夹图标变成星号
Step08:使用TortoiseSVN对a项目存放在硬盘的文件夹调用“Check for modifications”菜单后的效果如图7.79所示。
图7.79 文件夹属性发生变化
Step09:继续操作,将a项目进行提交。
Step10:对a项目调用“Update to Version…”菜单,弹出对话框配置选项如图7.80所示。
图7.80 使用默认配置Ignore externals不复选选
Step11:单击OK按钮后a项目的a_manager文件夹出现2个html文件,版本Revision和b项目中的一样,效果如图7.81所示。
图7.81 项目a出现2个html文件
Step12:继续操作,更改b项目中的html文件并提交,效果如图7.82所示。
图7.82 项目b中的html文件最新Revision值是3
Step13:再对a项目调用菜单“Update to Version…”,配置如图7.83所示
图7.83 选项Ignore externals勾选
Step14:单击OK按钮后a项目中的内容如图7.84所示
图7.84 项目a中的2个html版本未改变
Step15:再对a项目调用菜单“Update to Version…”,配置界面如图7.85所示。
图7.85 选项Ignore externals不复选
Step16:单击OK按钮后的效果如图7.86所示。
图7.86 项目a中的2个html文件成功更新到Revision值是3的版本
7.1.13 选项Depth和Change working copy to specified depth
Step01:创建测试用的web项目,名称是c,再创建名称是c的仓库,将web项目关联c仓库,并将web项目提交到c仓库中,web项目c默认的更新深度Update Depth值如图7.87所示。
图7.87 更新深度值是Fully recursive
Step02:创建A.java和B.java文件,设置初始内容及提交,如图7.88所示。
图7.88 初始内容及Revision版本是3
Step03:更改A.java和B.java文件内容及提交,如图7.89所示。
图7.89 提交更改内容及Revision版本是4
Step04:更改A.java和B.java文件内容及提交,如图7.90所示。
图7.90 提交更改内容及Revision版本是5
Step05:继续操作,创建类文件C.java,设置初始内容效果如图7.91所示。
图7.91 创建并提交文件C.java
对C.java文件提交后Revision的值是6。
Step06:继续操作,更改类文件C.java内容并提交,效果如图7.92所示。
图7.92 提交更改内容及Revision版本是7
7.1.13.1 选项Change working copy to specified depth未复选与Immediate children,including folders的测试
开发工具MyEclipse中的c项目中的a包的深度值如图7.93所示。
图7.93 包a的深度值是Fully recursive
Step01:对web项目c中的a包调用“Update to Version…”菜单,配置选项如图7.94所示。
图7.94 配置界面
Step02:在配置界面中选项Change working copy to specified depth未复选的含义是不改变包a的深度值,仅仅改变包a中内容的Revision版本号。
Step03:单击OK按钮后的效果如图7.95所示。
图7.95 Revision值是4的版本内容
从“包浏览器”面板中可以看到,文件A.java的Revision版本号被设置为4,对应的代码也是Revision为4的内容。
Step04:选项“Immediate children,including folders”的作用是将a文件夹中的子文件和子文件夹的Revision版本号进行改变,所以A.java是子文件,而子文件夹是b,查看一下b的Revision版本号如图7.96所示。
图7.96 文件夹b的Revision版本号的值也是4
Step05:选项“Change working copy to specified depth”并未复选,含义是不改变a文件夹的Depth深度,效果如图7.97所示。
图7.97 更新深度Depth值还是Fully recursive
7.1.13.2 选项Change working copy to specified depth复选与Immediate children,including folders的测试
Step01:继续使用前面的实验环境,对c项目调用“更新”菜单,更新到最新版,效果如图7.98所示。
图7.98 项目c重回最新版
Step02:而硬盘中a文件夹的深度依旧还是“Fully recursive”,如图7.99所示。
图7.99 文件夹a依旧还是Fully recursive
Step03:继续操作,对web项目c中的a包调用“Update to Version…”菜单,配置选项如图7.100所示。
图7.100 配置界面
Step04:单击OK按钮后的效果如图7.101所示。
图7.101 深度被更改文件夹结构发生改变
Step05:文件夹b的Revision版本号被更改为4,效果如图7.102所示。
图7.102 文件夹b的Revision值是4
Step06:而文件夹a的Depth深度也被更改,效果如图7.103所示。
图7.103 文件夹a的Depth被更改
Step07:根据前面学习过的经验,在MyEclipse中对包a调用“更新”菜单时是只把A.java和b进行更新的,效果如图7.104所示。
图7.104 只把a的子元素进行了更新
Step08:文件A.java变成它的最新版Revision值是5,而文件夹b的Revision值是7,效果如图7.105所示。
图7.105 文件夹b的属性
7.1.13.3 选项Change working copy to specified depth未复选与Fully recursive的测试
Step01:继续使用前面的实验环境,文件夹a的深度值还是“Immediate children,including folders”,效果如图7.106所示。
图7.106 文件夹a的深度值是Immediate children,including folders
Step02:继续操作,对包a调用“Update to Version”菜单配置界面如图7.107所示。
图7.107 配置选项
Step03:单击OK按钮后的包浏览器中的内容如图7.108所示。
图7.108 在当前的文件夹结构中更新到最新版
Step04:文件夹a的属性如图7.109所示。
图7.109 深度值未改而Revision变成7
Step05:而文件夹b及A.java文件的属性如图7.110所示。
图7.110 文件夹b及文件A.java的属性
7.1.13.4 选项Change working copy to specified depth复选与Fully recursive的测试
Step01:继续操作,对a包调用“Update to Version”菜单配置如图7.111所示。
图7.111 改变深度值及更新到最新版
Step02:单击OK按钮后a包中的全体内容被更新到最新版,如图7.112所示。
图7.112 包a中的所有内容都是最新版
Step03:而文件夹a的深度值也被改成Fully recursive,效果如图7.113所示。
图7.113 文件夹a的深度值也被改成Fully recursive
7.1.13.5 选项Change working copy to specified depth未复选与Only file children的测试
Step01:继续使用前面的实验环境进行测试,对包a调用“Update to Version”菜单,配置如图7.114所示:
图7.114 配置选项
Step02:选项“Only file children”的作用是将包a的子文件更新到Revision版本是3的内容。单击OK按钮后的效果如图7.115所示。
图7.115 包浏览器中只有A.java的Revision版本被更改成3
Step03:具体查看A.java文件及b文件夹的属性如图7.116所示。
图7.116 查看A.java文件及b文件夹的属性
Step04:由于选项“Change working copy to specified depth”未复选,所以文件夹a的深度值还是Fully recursive,效果如图7.117所示。
图7.117 文件夹a的深度值还是Fully recursive
7.1.13.6 选项Change working copy to specified depth复选与Only file children的测试
Step01:继续使用前面的实验环境进行测试,对包a调用“Update to Version”菜单,配置如图7.118氙示:
图7.118 配置选项
Step02:在此实验中选项“Change working copy to specified depth”复选,也就是更改a包的更新Depth深度值,同时还要将a包中的子文件进行更新到最新版,单击OK按钮后的效果如图7.119所示。
图7.119 文件夹结构被更改
Step03:文件夹a的深度值被重新定义为“Only file children”,如图7.120所示。
图7.120 文件夹a的Depth值为Only file children
7.1.13.7 选项Change working copy to specified depth未复选与Only this item的测试
Step01:继续使用前面的实验环境进行测试,对包a调用“Update to Version”菜单,配置如图7.121氙示:
图7.121 还原实验环境的Update配置
Step02:单击OK按钮后内容都是最新版,效果如图7.122所示。
图7.122 系统被还原成最新版
Step03:文件夹a的Depth值也为Fully recursive,效果如图7.123所示。
图7.123 文件夹a的Depth值也为Fully recursive
Step04:文件A.java属性如图7.124所示。
图7.124 文件A.java的属性
Step05:下一步对A.java文件调用“Update to Version”菜单,配置如图7.125所示。
图7.125 不更改深度值只将A.java更新到版本为3
Step06:单击OK按钮后的效果如图7.126所示。
图7.126 单击OK按钮后的文件夹结构
Step07:文件A.java属性如图7.127所示“
图7.127 文件A.java版本变成3
7.1.13.8 选项Change working copy to specified depth复选与Only this item的测试
Step01:继续对A.java调用“Update to Version”菜单,配置如图7.128所示。
图7.128 配置界面
Step02:单击OK按钮后的效果如图7.129所示。
图7.129 只把当前文件A.java更新到最新版
在此实验中,主要使用“Only this item”选项来对A.java文件进行测试,其实还可以使用“Only this item”选项来对文件夹进行实验。
如果在对文件夹调用“Update to Version”菜单,并且使用“Only this item”选项,而选项“Change working copy to specified depth”未复选,单击OK按钮时只把当前操作的文件夹的Revision值更改到指定的版本,其子资源的结构并未改变。
而如果在对文件夹调用“Update to Version”菜单,使用“Only this item”选项,而选项“Change working copy to specified depth”呈复选的状态时,单击OK按钮后不仅把当前操作的文件夹的Revision值更改到指定的版本,其子资源也被更改。
7.1.13.9 选项Exclude的测试
Step01:继续使用前面的实验环境进行测试,对包a调用“Update to Version”菜单,配置如图7.130氙示:
图7.130 还原实验环境的Update配置
Step02:单击OK按钮后内容都是最新版,效果如图7.131所示。
图7.131 系统被还原成最新版
Step03:文件夹a的Depth值也为Fully recursive,效果如图7.132所示。
图7.132 文件夹a的Depth值也为Fully recursive
Step04:对包c使用“Exclude”选项,如图7.133所示。
图7.133 要把包c进行排除
Step05:单击OK按钮后的效果如图7.134所示。
图7.134 成功将包c排除
Step06:对项目c调用“更新”菜单时c也不再出现,效果如图7.135所示。
图7.135 单击更新菜单c包还是未出现
说明排除c是成功的。
Step07:当对项目c调用“Update to Version”菜单,配置选项如图7.136所示。
图7.136 满树更新到最新版
Step08:单击OK按钮后的效果如图7.137所示。
图7.137 成功更新到最新版
7.1.13.10 选项Working copy的测试
Step01:继续使用前面的实验环境进行测试,对包a调用“Update to Version”菜单,配置如图7.138氙示:
图7.138 创建实验环境的Update配置
Step02:单击OK按钮后的效果如图7.139所示。
图7.139 仅剩A.java文件
Step03:对包a调用“Update to Version”菜单,配置如图7.140所示。
图7.140 配置选项使用Working copy
Step04:选项“Working copy”的含义是使用更新深度来更新项目,单击OK按钮后的效果如图7.141所示。
图7.141 仅仅更新A.java到最新版