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 ...
随机推荐
- wireshark的一些快捷键
恢复原来的大小 ‘crtl’+‘=’ 即按住crtl建和=键(backspace左边那个键) 缩小 ‘crtl’+‘-’ 即按住crtl建和-键(backspace左边第二个键) 放大 ‘crt ...
- socket创建TCP服务端和客户端
看情况选择相对应的套接字*面向连接的传输--tcp协议--可靠的--流式套接字(SOCK_STREAM)*面向无连接的传输--udp协议--不可靠的--数据报套接字(SOCK_DGRAM) 在liun ...
- SGU495Kids and Prizes(数学期望||概率DP||公式)
495. Kids and Prizes Time limit per test: 0.25 second(s) Memory limit: 262144 kilobytes input: stand ...
- JSON和JSONP简单总结
jsonp和json的区别,原理,在jquery中的使用 http://www.cnblogs.com/dowinning/archive/2012/04/19/json-jsonp-jquery.h ...
- Loj 2047 伪光滑数
Loj 2047 伪光滑数 正解较复杂,但这道题其实可以通过暴力解决. 预处理出 \(128\) 内的所有质数,把 \(n\) 内的 \(prime[i]^j\) 丢进堆中,再尝试对每个数变形,除一个 ...
- WPF 绘制对齐像素的清晰显示的线条
此前有小伙伴询问我为何他 1 像素的线条显示发虚,然后我告诉他是“像素对齐”的问题,然而他设置了各种对齐像素的属性依旧没有作用.于是我对此进行了一系列试验,对 WPF 像素对齐的各种方法进行了一次总结 ...
- iOS 修改通讯录联系人地址(address)崩溃原因分析
目前项目中需要对iOS系统通讯录进行读取,修改操作.在进行对地址修改的时候,出现了一个奇怪现象: ● 如果contact没有address字段(或者一个全新的contact),对它的address进行 ...
- pat 乙级 1093 字符串A+B (20 分)
给定两个字符串 A 和 B,本题要求你输出 A+B,即两个字符串的并集.要求先输出 A,再输出 B,但重复的字符必须被剔除. 输入格式: 输入在两行中分别给出 A 和 B,均为长度不超过 1的.由可见 ...
- 错误:'class QApplication' has no member named 'setMainwidget'
错误:'class QApplication' has no member named 'setMainwidget' 转自:http://blog.csdn.net/chenqiai0/articl ...
- CentOS 6.6下安装OpenOffice4.0
最近由于项目需要,要在公司服务器上安装Openoffice,网上搜了一些资料后成功安装,现分享给大家. 1.首先先下载好需要的rpm包:Apache_OpenOffice_4.0.0_Linux_x8 ...