你更新前的文件,沒有沖突標志,只是你最新更改的內容。(如果這個文件不可以合並,.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保持一致,用於統一,批量處理。