当前位置: 首页 > news >正文

SVN:Fully recursive、Working copy和Immediate children...区别

前言

工作中一直使用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):


check depth

如果鼠标单击收SVN版本控制的文件或者目录,可以选择”Update to revision”选项,然后会弹出如下界面,在这个界面中可以查看更新深度选项(Update Depth):


update to this version

更新深度界面:


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”进行全部更新。

相关文章:

  • ... fatal error LINK1120:1个无法解析的外部命令 的解决办法
  • UE4蓝图中的常用操作
  • UE4引擎查看资源相互引用的情况
  • UE4引擎Bulid打包失败UnrealBuildTool Exception: System.IO.IOException:
  • UE4引擎Android打包只生成apk而不需要obb文件
  • UE4引擎学习笔记:Blueprints Visual Scripting-Basic Scripting
  • C/C++位域(位段)示例总结
  • mysql 诡异的1054错误
  • UE4引擎取消编辑器处于后台时的降帧选项
  • Lua的函数参数为table时奇特现象
  • UE4引擎自定义插件导出类定义的简单流程
  • Lua收到C++传入的参数类型有一种userdata
  • Lua中可完美运行的三目运算符
  • Lua中 'local xxx do ... end' 到底表达了什么
  • Python树形打印目录结构
  • 【译】JS基础算法脚本:字符串结尾
  • 《Javascript高级程序设计 (第三版)》第五章 引用类型
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • Apache Zeppelin在Apache Trafodion上的可视化
  • Hexo+码云+git快速搭建免费的静态Blog
  • Java到底能干嘛?
  • Next.js之基础概念(二)
  • windows下如何用phpstorm同步测试服务器
  • 读懂package.json -- 依赖管理
  • 分享自己折腾多时的一套 vue 组件 --we-vue
  • 力扣(LeetCode)21
  • 深入 Nginx 之配置篇
  • 什么软件可以提取视频中的音频制作成手机铃声
  • 一起来学SpringBoot | 第三篇:SpringBoot日志配置
  • puppet连载22:define用法
  • Salesforce和SAP Netweaver里数据库表的元数据设计
  • 带你开发类似Pokemon Go的AR游戏
  • 树莓派用上kodexplorer也能玩成私有网盘
  • ​ 全球云科技基础设施:亚马逊云科技的海外服务器网络如何演进
  • ​Base64转换成图片,android studio build乱码,找不到okio.ByteString接腾讯人脸识别
  • ​HTTP与HTTPS:网络通信的安全卫士
  • #pragma pack(1)
  • (9)STL算法之逆转旋转
  • (C#)一个最简单的链表类
  • (附源码)ssm考生评分系统 毕业设计 071114
  • (力扣记录)235. 二叉搜索树的最近公共祖先
  • (一)kafka实战——kafka源码编译启动
  • (转)Android学习笔记 --- android任务栈和启动模式
  • (转)平衡树
  • ****** 二十三 ******、软设笔记【数据库】-数据操作-常用关系操作、关系运算
  • ***原理与防范
  • .gitignore文件_Git:.gitignore
  • .htaccess配置常用技巧
  • .NET CORE 3.1 集成JWT鉴权和授权2
  • .NET委托:一个关于C#的睡前故事
  • .vue文件怎么使用_我在项目中是这样配置Vue的
  • 。Net下Windows服务程序开发疑惑
  • @AutoConfigurationPackage的使用
  • @ComponentScan比较
  • @RequestParam详解