`

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命令大全[PDF格式]

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

    SVN_全部命令与中文详细解释

    - `--revision ARG` 或 `-r`:指定版本范围,ARG可以是单个版本号、日期、特殊标记如`HEAD`, `BASE`, `COMMITTED`, `PREV`。 - `--verbose` 或 `-v`:详细模式,显示更多额外信息。 - `--use-merge-history` 或 `...

    svn命令linux

    - 如`--revision PREV:COMMITTED`表示上一次提交至最新提交之间的变化。 - `--revision HEAD`表示最新的版本。 - `--revision BASE:HEAD`比较本地无改动的文件与远程最新版本的差异。 4. **日常操作**: - **...

    Subversion组件命令用法[借鉴].pdf

    `-r`选项用来指定要查询的版本范围,`HEAD`表示仓库的最新版本,`BASE`是工作副本的基础版本,`COMMITTED`是最后提交的版本,`PREV`则是`COMMITTED`的前一个版本。`-v`选项提供详细信息,`--incremental`和`--xml`...

Global site tag (gtag.js) - Google Analytics