前言
工作中一直使用SVN作为版本控制软件,每天更新(Update)和上传(Commit)是必要的操作,偶尔也会用到检出(Checkout)功能,最近发现更新和检出都会涉及到一个参数,那就是目录的深度,检出操作的时候叫做检出深度(Checkout Depth),更新操作的时候叫做更新深度(Update Depth),其中有好多个选项,比如”Fully recursive”、”Immediate children, including folders”、”Only file children”、”Only this item”、”Working copy”、”Exclude”等等,下面我们来详细解释一下这些都什么含义。
含义
在具体解释之前我们看一下操作界面是什么样的,先来看看检出,在一个不受SVN版本控制的目录下单击鼠标右键,选择”Check Out”选项,会弹如下界面,我们可以查看检出深度选项(Checkout Depth):
如果鼠标单击收SVN版本控制的文件或者目录,可以选择”Update to revision”选项,然后会弹出如下界面,在这个界面中可以查看更新深度选项(Update Depth):
更新深度界面:
从前面几个截图中我们可以发现检出深度和更新深度的选项不完全相同,但总共只有以下几种,我们只需要统一记住即可,你可以选择要检出的深度,它允许你指定子目录递归的深度。如果你只需要大目录中的几个子条目,你可以只检出最高层目录,然后递归的更新选择的目录。
Working copy:工作副本,保持工作副本指定的深度。此选项不用于检出对话框,但它是其它所有含有深度配置对话框的默认配置。个人理解:这个选项不会出现在检出深度中,只会出现在更新的深度选择中,也就是更新时保持目录检出时的深度,比如检出时选择”Immediate children, including folders”则更新时”Working copy”等同于”Immediate children, including folders”
Fully recursive:全递归,检出完整的目录树,包含所有的文件或子目录。很好理解,全部检出或者更新当前选中文件或目录中的内容。
Immediate children, including folders:直接子节点,包含文件和文件夹。检出当前目录中的文件或直接子文件夹,但是不递归展开子文件夹。
Only file children:仅文件子节点,检出指定目录,包含所有文件,但是不检出任何子文件夹。
Only this item:仅仅检出此项,只检出目录。不包含其中的文件或子文件夹。
Exclude:排除,对于已经创建好的工作副本,可以使用此选项来缩减文件夹的深度。这个选项只在更新至版本对话框中可用。个人理解就是在已经检出的版本目录中去除掉一些不需要更新的文件和目录。
学以致用
其实我们了解这些选项也是为了使用,说一个自己的例子:之前自己用SVN都是用默认选项,从来没有修改过检出深度和更新深度,检出深度一直是”Fully recursive”,更新深度一直是”Working copy”,也就是说没有都是全更新,这就带来一个问题,其实有时候检出一个版本只是为了其中的几个目录,所里全部检出会耽误时间,一个个检出又会丢下目录,并且增加过多的.svn目录,所以我现在检出基本用”Immediate children, including folders”先把子文件和目录下载下来,然后再选择要更新的目录使用”Fully recursive”进行全部更新。