`

svn关键词BASE, HEAD, COMMITTED, PREV的深入理解

    博客分类:
  • svn
阅读更多
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保持一致,用于统一,批量处理。
分享到:
评论

相关推荐

    svn关键词BASE, HEAD, COMMITTED, PREV的深入理解.rar

    在版本控制系统Subversion(简称svn)中,有四个关键词经常被使用:BASE、HEAD、COMMITTED和PREV,它们是用来追踪文件和目录在不同版本状态的关键。这些关键词对于理解和操作svn仓库至关重要,尤其是在进行协同开发...

    深入理解SVN(1).pptx

    **深入理解SVN** **1. SVN的基本概念** SVN,全称为Subversion,是一款开源的版本控制系统,它继承了CVS(Concurrent Versions System)的大部分特性,并且在功能和性能上有所优化。SVN的主要目标是为软件开发团队...

    default_dev.css.svn-base

    default_dev.css.svn-base

    SVN Training svn培训

    SVN,全称为Subversion,是一款广泛应用于软件开发领域的版本控制系统。它允许团队成员协同工作,跟踪文件和目录的变化,并提供...无论是开发者还是管理者,对 SVN 的深入理解和实践都将是提升软件开发流程的关键步骤。

    日期控件.zip

    │ │ calendar.js.svn-base │ │ config.js.svn-base │ │ My97DatePicker.htm.svn-base │ │ readme.txt.svn-base │ │ WdatePicker.js.svn-base │ │ │ └─tmp │ ├─prop-base │ ├─props ...

    svn命令大全[PDF格式]

    在深入了解SVN命令之前,我们需要先理解一些基本的概念: - **工作副本**:指本地计算机上的项目文件夹,通过`svn checkout`命令获取。 - **仓库**:存储所有版本化的文件和目录的地方,可以是远程服务器或本地硬盘...

    svn插件myeclipse+svn插件

    本文将深入探讨如何在MyEclipse集成开发环境中安装和使用Subversion(SVN)插件,以便更有效地进行版本控制。Subversion是一款广泛使用的开源版本控制系统,它允许开发者协同工作,跟踪代码更改,并管理项目文件的...

    SVN中文教程 SVN简明教程 SVN学习笔记

    本教程将深入探讨SVN的基础知识,包括安装配置、基本操作以及协同工作流程。 1. **SVN安装与配置** - Windows用户可以通过TortoiseSVN这个图形化客户端进行安装,安装后,文件右键菜单会集成SVN功能。 - Linux和...

    SVN安装和深入理解分支和模拟实践

    1、SVN仓库目录结构Repository 2、trunk(主干|主线) branchs(分支) tags(标记)作用 3、SVN具体操作步骤 3.1、TortoiseSVN创建仓库 3.2结合eclipse上传项目 四、测试主干和分支合并 1、测试号1 2、测试号2 3、测试号3...

    svn-book 书籍

    在初次接触版本控制或者需要深入理解SVN操作时,这本书提供了详尽的指导。 该书涵盖了多个关键知识点,包括但不限于: 1. **安装与配置**: 书中详细介绍了如何在各种操作系统(如Windows、Linux、Mac OS X)上安装...

    C#开发用SVN服务器以及客户端

    9. **学习资源**:为了更好地使用SVN,开发者可以参考官方文档,参与社区讨论,或查阅教程,如Pro SVN这本书,来深入理解其原理和最佳实践。 总的来说,SVN作为C#开发中的版本控制工具,能够有效地管理项目代码,...

    SVN演示 SVN演示 SVN演示 SVN演示 SVN演示 SVN演示

    【版本控制与SVN简介】 ...通过上述内容,我们可以理解SVN作为版本控制系统的核心价值,以及TortoiseSVN在Windows环境下的便捷使用方式。掌握这些知识,可以显著提升团队的协作效率和项目管理能力。

    svn清理sqlite3

    首先,让我们理解svn的工作原理。svn在本地创建了一个仓库(repository),用于存储所有文件的版本历史。当你执行svn操作,如提交(commit)、更新(update)、清理(cleanup)等,它都会与这个仓库进行交互。当遇到...

    svn服务器管理页面

    SVN(Subversion)是一种广泛使用的版本控制系统,用于管理和跟踪文件和目录的变更。在给定的场景中,"svn...通过深入理解并熟练运用svnmanger,你可以更好地管理和维护你的SVN服务器,为团队协作提供有力的支持。

    .svn删除软件

    总之,".svn删除软件"是为了解决特定场景下对`.svn`文件的管理需求,理解其背后的目的和可能的影响是正确使用这类工具的关键。在进行操作前,确保你清楚自己的目标,以免对正常的工作流程造成影响。

    svn 64 用于eclipse

    SVN,全称为Subversion,是一款广泛应用于软件开发领域的版本控制系统。它允许团队协作开发,管理代码的不同版本,跟踪每个版本的变化,并实现代码的备份和恢复。Eclipse是一款功能强大的集成开发环境(IDE),支持...

    SVNKit获取SVN信息

    本篇文章将深入探讨如何利用SVNKit来获取SVN的相关信息。 首先,你需要在项目中引入SVNKit的依赖。通常,你可以通过Maven或Gradle等构建工具添加对应的依赖库。例如,在Maven的pom.xml文件中,你可以添加以下依赖:...

    获取svn最新版本号示例 以及svn常用命令

    本文将深入探讨如何获取svn的最新版本号,并介绍一些常用的svn命令。 首先,获取svn的最新版本号通常是为了确保你正在使用的代码是最新的,避免因版本过旧而遇到已解决的问题或错过新功能。有几种方法可以获取: 1...

Global site tag (gtag.js) - Google Analytics