svn关键词BASE, HEAD, COMMITTED, PREV的深入理解
svn关键词BASE, HEAD, COMMITTED, PREV可以很方便用于日常操作中,但是很多人对他们的工作原理和方式不是太了解。
在这里我将使用用例,诠释他们的作用和意图。
先给出svn手册中对他的解释:
"HEAD" latest in repository
"BASE" base rev of item's working copy
"COMMITTED" last commit at or before BASE
"PREV" revision just before COMMITTED
HEAD表示在版本库中最新的版本,记住一定是版本库,而不是某个working-copy, 另外需要注意的是,这里提到版本库是指对应working-copy的那个分支或主干。
COMMITTED表示在working-copy中最近的一次提交版本。
PREV表示在working-copy中最近的倒数第二次提交版本,也就是COMMITTED - 1。
前面3个概念都是比较好理解的。
最后一个BASE有点不好理解,先给出例子,最后结论BASE的含义
-bash-2.05b$ svn co http://svn.corp/.../proxyio/
A proxylog/proxyio.procinfo
A proxylog/pi.cpp
A proxylog/Makefile
A proxylog/run.sh
Checked out revision 134057. -bash-2.05b$ svn st -v
134057 134034 deyi.long .
134057 102502 deyi.long proxyio.procinfo
134057 134034 deyi.long pi.cpp
134057 102674 deyi.long Makefile
134057 114428 deyi.long run.sh
备注:第一列表示BASE, 第二列表示COMMITTED 可以看出checkout一个working-copy后,svn会给这个working-copy分一个新的、统一的BASE版本号(如 134057)。
接下来可以修改pi.cpp代码,然后checkin,你就会发现这个文件的BASE和COMMITTED会同时增加,并且相等。如下
-bash-2.05b$ svn st -v
134057 134034 deyi.long .
134057 102502 deyi.long proxyio.procinfo
134058 134058 deyi.long pi.cpp
134057 102674 deyi.long Makefile
134057 114428 deyi.long run.sh 接下来在此目录下执行update动作,你就会发现所有文件的BASE都进行了升级,但是COMMITTED没有改变,如下
-bash-2.05b$ svn up
At revision 134058. -bash-2.05b$ svn st -v
134058 134034 deyi.long .
134058 102502 deyi.long proxyio.procinfo
134058 134058 deyi.long pi.cpp
134058 102674 deyi.long Makefile
134058 114428 deyi.long run.sh 通过上述用例,可以看出BASE表示在working-copy中每个文件基准版本,会经常变动,并且有统一working-copy的版本的意图。另外,也说明对每个文件来说,BASE就是COMMITTED的别名,但是它可以和其他文件BASE保持一致,用于统一,批量处理。
root@DESKTOP-I4OIMJC /cygdrive/e/html/pim/php_aspire-www/heonline/lib
# svn up Curl.class.php
Updating 'Curl.class.php':
At revision 21990. # svn st -v Curl.class.php
M 21990 21990 liuchao_c Curl.class.php root@DESKTOP-I4OIMJC /cygdrive/e/html/pim/php_aspire-www/heonline/lib
# svn st -v Log.class.php
21989 21954 liuchao_c Log.class.php
root@DESKTOP-I4OIMJC /cygdrive/e/html/pim/php_aspire-www/heonline/lib
# svn up
Updating '.':
At revision 21990. root@DESKTOP-I4OIMJC /cygdrive/e/html/pim/php_aspire-www/heonline/lib
# svn st -v Log.class.php
21990 21954 liuchao_c Log.class.php
BASE COMMITTED
svn关键词BASE, HEAD, COMMITTED, PREV的深入理解的更多相关文章
- 封装常用的js(Base.js)——【01】理解库,获取节点,连缀,
封装常用的js(Base.js)——[01]理解库,获取节点,连缀, youjobit07 2014-10-10 15:32:59 前言: 现如今有太多优秀的开源javascript库, ...
- 解决svn问题:Wrong committed revision number: -1
参考:http://my.oschina.net/luckyi/blog/291007
- svn笔记3
如果你是从头到尾按章节阅读本书,你一定已经具备了使用Subversion客户端执行大多数不同的版本控制操作足够的知识,你理解了怎样从Subversion版本库取出一个工作拷贝,你已经熟悉了通过svn ...
- C++ 中的virtual关键词
C++ 中的virtual关键词 动态绑定 所谓动态绑定,我的理解就是一个函数在调用之前无法得知参数的具体类型(基类还是派生类).C++ Primer上描述了两种动态绑定的情况: 要触发动态绑定,必须 ...
- Python 一键上传下载&一键提交文件到SVN入基线工具
一键上传下载&一键提交文件到SVN入基线工具 by:授客 QQ:1033553122 实现功能 1 测试环境 1 使用说明 1 注: 根据我司项目规则订制的一套工具,集成以下功能,源码 ...
- Centos下SVN环境部署记录
大多数情况下,我们日常工作中用的版本控制系统都会选择分布式的Git,它相比于集中式的SVN有很多优势.但是有些项目软件基于自身限制,可能只支持SVN做工程同步.废话就不多说了,下面记录下SVN的部署和 ...
- centos7 安装svn, 同时支持 svn 和 http访问
1. 安装 svn [root@svn conf]#yum install subversion [root@svn conf]# svn --version svn, version 1.7.14 ...
- SVN冲突出现原因及解决方法浅谈
缘由 很简单,用svn合base,出现了各种各样奇怪的问题,虽然最终没有造成什么大的线上问题,但过程也是曲折的,耗费个人精力,也占用他人资源,不好不好,一点都不佛系. 究其原因,还是对为什么出现各种冲 ...
- (二十五)svn的问题
今天更新代码到svn中的时候出现了错误,准确的说是在操作更新之前的步骤出现了错误,因此对svn有了更近一步的理解. check:下载svn中的代码到指定的储存路径中: update:更新s ...
随机推荐
- iad 集成三两事
1. 好像是随着ios8的beta开始. iad 已经发生了一些变化. 比如找不到enable iad network 的按钮了. 貌似是不需要手动去 enable 了. 只需要嵌入 iad fra ...
- Android常见问题——找不到HttpClient和okHttp的包
今天再用Android Studio进行网络编程的时候遇到了一个问题,就是怎么也找不到HttpClient的包,上网搜了一下也没什么结果,但最后偶然解决问题,下面总结了一下方法: 首先打开File-& ...
- 【Python学习】Thread笔记(1)
Python学习笔记 - Thread(1) 标签(空格分隔): python from threading import Thread num = 2000 id_list = [] def do_ ...
- IOS在Document目录下创建文件夹、保存、读取、以及删除文件
// 在Documents目录下创建一个名为LaunchImage的文件夹 NSString *path = [[NSHomeDirectory() stringByAppendingPathComp ...
- BZOJ5336 TJOI2018 party 【状压DP】*
BZOJ5336 TJOI2018 party Description 小豆参加了NOI的游园会,会场上每完成一个项目就会获得一个奖章,奖章 只会是N, O, I的字样.在会场上他收集到了K个奖章组成 ...
- 【angularJS】Controller控制器
1. 定义 控制器(Controller)在AngularJS中作用是增强视图(View),AngularJS控制器是一个构造方法,用来向视图(View)中添加额外功能. ng-controller指 ...
- CSU1612Destroy Tunnels(强连通)传递闭包
Destroy Tunnels 原来早忘记了离散里含有这么一个叫传递闭包的东西 矩阵A的闭包B = A U A^2 U A^3 U ... 所以这里直接如果A[i][j]!= 0,建边i->j跑 ...
- 安装WampServer关闭mysql服务后打不开了(端口冲突)
1.WampServer自带了mysql精简班的数据库了 2.WampServer自带 的mysql和你独立安装的mysql端口号冲突了 3.mysql默认的端口号是3306 4.建议你修改WampS ...
- 织梦DedeCMS模板通用安装方法
在网络上有很多可以免费下载的DEDECMS模板,下载之后如何安装是很多新手的共同问题.下面将结合我个人使用DEDECMS模板的一些心得,讲一下DEDE模板安装的通用方法. 1.下载一个模板之后要判断一 ...
- C# winform中自定义用户控件 然后在页面中调用用户控件的事件
下面是用户控件的代码: using System; using System.Collections.Generic; using System.ComponentModel; using Syste ...