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 ...
随机推荐
- IE只是开始!
Study is boring,but devotion make it is easy!
- Android 编程 AMapLocationClientOption 类中的 setNeedAddress 方法用处 (高德地图 com.amap.api.location.AMapLocationClientOption 中的类)
最近在用高德地图来写Android App, 其中有一些 方法是不太理解的,这里写一下 对 高德地图 com.amap.api.location.AMapLocationClientOption ...
- 【剑指offer】不使用新变量,交换两个变量的值,C++实现
# 题目 不使用新变量,交换两个变量的值. # 思路 方法一:使用加减法操作,交换两个变量的值. A = A+B B = A-B A = A-B 方法二:使用异或运算,交换两个变量的值 A = A^B ...
- Jmeter简单的接口测试
1.新建线程组 2.编辑线程组信息 3.在线程组中添加HTTP信息头管理器 4.配置HTTP信息头管理器 参数格式配置 5.在线程组中添加HTTP请求 6.编辑HTTP请求信息 7.添加响应断言 8. ...
- 每天一个linux命令:【转载】cp命令
cp命令用来复制文件或者目录,是Linux系统中最常用的命令之一.一般情况下,shell会设置一个别名,在命令行下复制文件时,如果目标文件已经存在,就会询问是否覆盖,不管你是否使用-i参数.但是如果是 ...
- Codeforces 382E Ksenia and Combinatorics 【组合计数】*
Codeforces 382E Ksenia and Combinatorics Ksenia has her winter exams. Today she is learning combinat ...
- 推荐近乎免费的调试神器——OzCode
当一只断点打在 Visual Studio 的代码编辑器中,程序命中断点的那一刻,调试才刚刚开始……这个时候忙碌的手在键盘和鼠标之间来回跳跃,试图抓住每一次单步执行带来的状态改变. 如果命中断点的那一 ...
- UI 设计中的视觉无障碍设计
我给博客改了主题色,从 这样的 改成了 这样的:然而我问小伙伴看看效果他却并没有发现改变. 红绿色盲在亚洲人中占比,男性约 5%,女性则小得多.也就是说,就算仅考虑为国内用户开发应用,这也是很大的一部 ...
- JAVA验证身份证号码是否合法
package com.chauvet.utils; import java.text.ParseException; import java.text.SimpleDateFormat; impor ...
- Promise详解
前言 && 基础概念 Promise 是解决 JS 异步的一种方案,相比传统的回调函数,Promise 能解决多个回调严重嵌套的问题. Promise 对象代表一个异步操作,有三种状态 ...