你更新前的文件,没有冲突标志,只是你最新更改的内容。(如果这个文件不可以合并,.mine文件不会创建,因为它和工作文件相同。)
filename.rOLDREV
这个是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。【其实是 BASE版本号】
filename.rNEWREV
这是Subversion从服务器刚刚收到的版本。这个版本就是版本库的HEAD版本。
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保持一致,用于统一,批量处理。