3.3 更新到指定的修订版本
菜单“Update to revision”的作用是将本地的文件替换成指定revision版本的内容,此菜单与“Update”菜单在使用上也有一些联系,也就是使用完“Update to revision”菜单后再调用“Update”菜单欲将文件更新到最新版时要参考working copy工作副本文件的Depth深度值。
3.3.1 Only file children选项和make depth sticky的含义
Step01:在进行实验之前,请按照章节2.6来进行仓库a的初始化工作。
Step02:下面开始实验“Update to revision”界面中的各个选项的含义。
Step03:将仓库a导出Checkout到桌面test11文件夹,导出配置如图3.34所示。
图3.34 导出配置
Step04:导出的结果如图3.35所示。
图3.35 导出Checkout的结果
文件夹test11的深度是。
Step05:当对文件夹test11执行“Update to revision”菜单时,对弹出界面配置如图3.36所示。
图3.36 对test11文件夹中的内容更新到revision是3
选项“Make depth sticky”呈复选的状态,也就是将工作副本test11文件的Depth深度值重新定义成“Only file children”。
Step06:单击OK按钮后的效果如图3.37所示。
图3.37 文件夹test11的更新到revision值为3的效果
在revision值为3时,并且选项“Make depth sticky”呈复选的状态,将test11中的内容重新定义成“Only file children”深度时仅仅a.txt文件被更改,所以a.txt被Updated更新,test11文件夹结构如图3.38所示。
图3.38 test11文件夹的内容仅剩a.txt
再次查看test11文件夹的depth值被改成。
Step07:继续实验,将刚才导出Checkout仓库a的同样配置Checkout到test12文件夹,并查看当前文件夹test12的属性。
Step08:继续对test12文件夹执行“Update to revision”菜单,配置界面如图3.39所示。
图3.39 对test12文件夹进行Update到revision值为3
选项“Make depth sticky”未呈复选的状态,也就是不重新定义工作副本test12的Depth深度值,也就是保持test12文件夹的深度值不变,仅仅将工作副本的子文件进行更新到revision的值是3的版本。
Step09:单击OK按钮,Update到revision值为3的结果如图3.40所示。
图3.40 更新test12后的效果
Step10:更新后的test12文件夹结构如图3.41所示。
图3.41 更新test12文件夹后的结构
只将a.txt进行了更新,aa.txt并未更新。
文件夹test12的深度值还是保持不变。
3.3.2 Update Depth选项值Working copy的含义
“Update Depth”选项值“Working copy”的含义是使用当前工作副本(working copy)文件的深度值更新到指定的revision版本号,也就是使用工作副本(working copy)右键菜单“属性”中“Subversion”中的“Depth”深度值进行更新到指定的revision版本号。
Step01:对仓库a进行导出到桌面test13文件夹,配置界面如图3.42所示。
图3.42 导出到test13文件夹
桌面test13的深度值为。
Step02:继续用同样的配置将仓库a导出到桌面test14文件夹。
Step03:对test13文件夹调用“Update to revision”,弹出界面如图3.43所示。
图3.43 对test13进行更新的配置界面
Step04:单击OK按钮后的界面如图3.44所示。
图3.44 成功更新到revision值为3
文件夹test13的深度值不变,还是,因为“Update Depth”值选择“Working copy”就是使用原来的“Fully recursive”值进行更新工作副本,而“Make depth sticky”复选后将使用最新的“Fully recursive”值更新副本的深度,需要注意的是,更新前深度值是“Fully recursive”,更新后还是“Fully recursive”,深度值未改变。
Step05:再对test14进行实验,更新界面配置如图3.45所示。
图3.45 对test14进行测试
Step06:选项“Make depth sticky”并未复选,单击OK按钮后的界面内容如图3.46所示。
图3.46 对test14更新后的效果
文件夹test14更新后的深度值是。
因为选项“Make depth sticky”并未复选所以保持原来“Fully recursive”的值,再用“Update Depth”选项“Working copy”值来更新工作副本中的内容到revision值为3。
经过此操作,test13和test14文件夹中的内容都是相同的,都是revision值为3的内容。
3.3.3 Update Depth选项值Fully recursive的含义
Step01:继续将仓库a分别用同样的配置导出Checkout到test15和test16文件夹,配置如图3.47所示。
图3.47 导出到test15和test16的配置
Step02:成功Checkout后的界面如图3.48所示。
图3.48 成功导出的界面
而文件夹test15和test16的深度值是一样的,如“图3.3.3 test15和test16深度值一样”所示。
图3.3.3 test15和test16深度值一样
Step03:下面开始实验“Update Depth”值为“Fully recursive”的情况。
分别对文件夹test15和test16执行“Update to revision”菜单如图3.49所示。
图3.49 分别对文件夹test15和test16执行菜单
Step04:单击OK后的结果如图3.50所示。
图3.50 执行结果
文件夹test15的深度值是。
文件夹test16的深度值是。
将文件夹test15的“Make depth sticky”复选是将test15的深度值重新定义成“Fully recurssive”后更新到revision值是3的状态。
而对文件夹test16的“Make depth sticky”未复选是使用原来test16的深度值“Only file children”,而“Update Depth”值选择“Fully recurssive”时的作用是将工作副本中的整树内容更新到revision值是3的状态。
3.3.4 Update Depth选项值Immediate children,including folder的含义
Step01:将仓库a导出到桌面的test17和test18文件夹中,导出到test17文件的配置界面如图3.51所示。
图3.51 导出的配置界面
Step02:用同样的配置将仓库导出到test18中。
Step03:成功导出后的效果如图3.52所示。
图3.52 成功导出后的效果
而文件夹test17和test18的深度值是一样的,如图3.53所示。
图3.53 文件夹test17和test18的深度值都是Only this item
Step04:对文件夹test17和test18使用“Update to revision”后的界面配置如图3.54所示。
图3.54 对test17和test18使用Update to revision菜单
Step05:单击OK按钮后的效果如图3.55所示。
图3.55 成功更新的效果
对test17文件夹的“Make depth sticky”复选意味着使用最新版的Depth深度值“Immediate children,including folder”对test17文件夹进行更新,更新的内容是工作副本的子文件夹或子文件。
对test18文件夹的“Make depth sticky”未复选意味着保持test18的Depth深度值Only this item保持不变。“Update depth”选择“Immediate children,including folder”时的作用是更新的内容为工作副本test18的子文件夹或子文件。
3.3.5 Update Depth选项值Only this item的含义
Step01:将仓库a导出到桌面test21文件夹中,导出的配置如图3.56所示。
图3.56 导出的配置
Step02:单击OK后的test21文件夹内容如图3.57所示。
图3.57 空的test21文件夹
从Checkout导出的效果来看,如果“Checkout Depth”选项选择“Only this item”时导出的是一个空文件夹,那么这个空文件夹的意义是什么呢?
比如有些时候,我们想实现Checkout导出的revision版本号并不相同,这个时候,就得需要在导出Checkout时选择“Only this item”选项了。
Step03:继续来操作,在test21文件夹上面调用菜单如图3.58所示。
图3.58 调用Repo-browser菜单
Step04:在弹出的“Repo-browser”界面中对a.txt文件调用“Update item to revision”菜单如图3.59所示。
图3.59 对a.txt文件调用Update item to revision菜单
Step05:弹出界面如图3.60所示。
图3.60 导出a.txt的最新版
Step06:成功导出的效果如图3.61所示。
图3.61 成功导出
Step07:文件夹test21中的a.txt内容如图3.62所示。
图3.62 成功导出a.txt最新版
上面的步骤就是在Checkout导出时使用“Only this item”选项来导出一个空文件夹,这样就有选择性的导出指定revision版本的文件到空的工作副本中。
那“Only this item”在“Update to revision”菜单中的使用是什么效果呢?
Step08:继续操作,将仓库a用同样的配置导出Checkout到test22和test23文件夹,导出的配置如图3.63所示。
图3.63 导出的配置
Step09:单击OK按钮成功导出全部的最新的文件,如图3.64所示。
图3.64 导出全部最新版的文件
Step10:对test22和test23文件夹调用“Update to revision”菜单后配置如图3.65所示。
图3.65 欲对文件夹进行Update to revision操作
Step11:单击OK按钮后的效果如图3.66所示。
图3.66 操作完成
Step12:从图中可以发现test22文件夹中的内容全部清空,变成一个空的文件夹了,效果如图3.67所示。
图3.67 删除全部文件的test22文件夹中的内容
3.3.6 Update Depth选项值Exclude的含义
选项值Exclude的含义是可以将Checkout后工作空间中的文件进行排除,也就是缩小深度的范围。
下面来实验此值的效果及作用。
Step01:将仓库a中的全部内容导出到test24文件夹中,导出的结果如图3.68所示。
图3.68 全部导出到test24文件夹中
Step02:文件夹test24中的内容如图3.69所示。
图3.69 文件夹test24中的内容
Step03:现在不想对a.txt进行操作,所以就得对a.txt进行排除Exclude的操作。
对文件夹test24执行Repo-browser菜单,如图3.70所示。
图3.70 调用Repo-browser菜单
Step04:在弹出的界面中对a.txt文件执行右键菜单“Update item to revision”,如图3.71所示。
图3.71 对a.txt调用Update item to revision菜单
Step05:弹出的界面配置如图3.72所示。
图3.72 使用Exclude值把a.txt进行排除
Step06:单击OK按钮后的效果如图3.73所示。
图3.73 将a.txt排除了
Step07:文件a.txt并不在test24文件夹中了,如图3.74所示。
图3.74 成功将a.txt进行Exclude排除
其实还有更简单的办法也能实现Exclude排除的功能,也就是直接对工作副本中的文件或文件夹调用“Update to revision”菜单,然后在Update Depth选项里选择Exclude排除即可。
反排除的操作是在repo-browser窗口中对指定的文件或文件夹也是使用右键菜单“Update item to revision”来进行排除的文件或文件夹的还原。
3.3.7 Update Depth选项值Custom depths的含义
有时候想将某些文件更新到指定的版本,这种情况下就需要使用Custom depths值了。
Step01:将仓库a按着图3.75所示的配置进行导出。
图3.75 导出仓库a到test25中
Step02:在桌面test25中使用“Update to revision”菜单,单击其中的按钮,在弹出的界面中配置选择文件如图3.76所示。
图3.76 只选择a.txt
Step03:选项“Update Depth”值被自动设置为“Custom depths”,如图3.77所示。
图3.77 自动设置为Custom depths
Step04:单击OK按钮后,由于Make depth sticky选项复选所以只保留了revision版是3的a.txt文件。
Step05:文件夹test25结构如图3.78所示。
图3.78 文件夹结构
但test25文件夹的深度并未改变,效果如图3.79所示。
图3.79 深度值Depth未改变还是Fully recursive
说明深度值选择“Custom depths”时,即使Make depth sticky选项复选也不改变工作副本的深度值。
3.3.8 选项Omit externals的含义
Omit英译汉是忽略的意思。
在这里说明一下,引用仓库的操作也算是一个Revision值,比如有Revision版本号,在Revision值是10时在a仓库引用的b仓库,当导出a仓库的版本号是9时是不包含b仓库的。
先创建实验用的环境。
Step01:创建2个仓库a和b,在桌面创建aData文件夹,创建txt文件,内容如图3.80所示。
图3.80 创建txt有初始内容
Step02:对aData文件夹执行Import命令,如图3.81所示。
图3.81 导入后revision的值是2
Step03:再将a仓库中的内容Checkout导出到桌面aCheckout文件夹中,并更改txt内容如图3.82所示。
图3.82 更改txt文件内容
Step04:提交Commit后的结果如图3.83所示。
图3.83 提交Commit后的结果
Step05:再在桌面创建bData文件夹,初始内容如图3.84所示。
图3.84 bData文件夹中的内容
Step06:将bData文件夹中的内容Import导入到b仓库中的结果如图3.85所示。
图3.85 成功导入b仓库中
Step07:注意:进入操作环节,在a项目中引用b项目。
引用完成后的a仓库内容如图3.86所示。
图3.86 仓库a成功引用仓库b
Step08:将最新版本的内容从仓库a导出Checkout到桌面atest和aatest文件夹,如图3.87所示。
图3.87 将仓库a导出到2个文件夹中
Step09:这2个文件夹中的文本文件内容如图3.88所示。
图3.88 导出的txt文件内容都是1
Step10:然后再将仓库b导出到桌面bCheckout中,并更改文件内容如图3.89所示。
图3.89 更改b工作副本中的文件
Step11:并对bCheckout文件夹执行commit提交操作,结果如图3.90所示。
图3.90 仓库b被更新了
Step12:再对atest和aatest文件夹调用“Update to revision”菜单,更新的配置界面如图3.91所示。
图3.91 更新的配置界面
Step13:单击OK后的两个工作副本中的内容如图3.92所示。
图3.92 左边是旧值,右边是新值