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 ...
随机推荐
- angular 与jQuery混用 大坑一
由于angular是在真实dom加载之后,运行,所以jQuery操作dom时,要先于angular添加的元素(如,ng-repeat),所以常常会出现,元素错位,解决办法:添加一个透明的站位元素:
- SAPUI5实例一:来创建Web应用UI
试试SAPUI5.这是SAP比较重要的一个UI库.完全通过HTML5实现,可以作为Web和移动应用的UI开发. 现在已经开源了.在这里可以下载: http://sap.github.io/openui ...
- ICE实现服务器客户端
本文将结合实际项目,做一个基于ice的实际项目实例应用,该实例完成客户端调用服务端接口完成消息发送,计算的功能.1,创建java项目ICEServer,导入ice.jar. 2,在项目下创建slice ...
- hexo部署Github博客
例子:https://aquarius1993.github.io/blog/ 仓库:https://github.com/Aquarius1993/blog (前提是已经安装Xcode和git) 1 ...
- 【剑指offer】字符串转换为数字,C++实现
# 题目 把字符串转换成整数 # 思路 1.功能测试 正数/复数/0 2.边界值测试 最大的正整数/最小的负整数(数据上下溢出) 3.特殊输入测试 空字符串""的处理,返回0,设置 ...
- c++ 载入内存中dll ,以及内存注入
用c++ 许多代码都得自己写, 这里是我自己修改的一个内存载入的一个封装库 , c++ 的程序员可以直接拿来用 特点如下: 直接在内存中载入,无磁盘占用 支持加壳保护的dll , 平时用的最多的vmp ...
- BZOJ2160 拉拉队排练【Manacher】
Description 艾利斯顿商学院篮球队要参加一年一度的市篮球比赛了.拉拉队是篮球比赛的一个看点,好的拉拉队往往能帮助球队增加士气,赢得最终的比赛.所以作为拉拉队队长的楚雨荨同学知道,帮助篮球队训 ...
- Tree的两种存储形式
1.xml存储 2.链式结构存储 List<Node> nodes = new List<Node>() { , Name = "中国" }, , Name ...
- 在linux安装redis单机和集群后,如何在windows上使用redis客户端或者java代码访问错误的原因很简单,就是没有连接上redis服务,由于redis采用的安全策略,默认会只准许本地访问。需要通过简单配置,完成允许外网访问。
这几天在学习在linux上搭建服务器的工作,可谓历经艰辛.可喜最后收获也不少. 这次是在linux上搭建redis服务器后从windows上缺无法访问,连接不上. 仔细回忆以前搭建nginx和ftp的 ...
- groovy && java 混编 gradle 配置
参考配置: apply plugin: "application" apply plugin: "java" apply plugin: "groov ...