SVN 沖突文件詳解


filename.mine
    
你更新前的文件,沒有沖突標志,只是你最新更改的內容。(如果這個文件不可以合並,.mine文件不會創建,因為它和工作文件相同。)


filename.rOLDREV
    
這個是你做更新操作以前的BASE版本,就是你在上次更新之后未作更改的版本。【其實是
BASE版本號

filename.rNEWREV
      
這是Subversion從服務器剛剛收到的版本。這個版本就是版本庫的HEAD版本。

再來介紹一下什么是BASE版本



對BASE不清楚的,可以查看下面內容


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的含義






  1. -bash-2.05b$ svn co http://svn.corp/.../proxyio/

  2. A    proxylog/proxyio.procinfo

  3. A    proxylog/pi.cpp

  4. A    proxylog/Makefile

  5. A    proxylog/run.sh

  6. Checked out revision 134057.


  7. -bash-2.05b$ svn st -v

  8.            134057   134034 deyi.long    .

  9.            134057   102502 deyi.long    proxyio.procinfo

  10.            134057   134034 deyi.long    pi.cpp

  11.            134057   102674 deyi.long    Makefile

  12.            134057   114428 deyi.long    run.sh

  13. 備注:第一列表示BASE, 第二列表示COMMITTED

可以看出checkout一個working-copy后,svn會給這個working-copy分一個新的、統一的BASE版本號(如
134057)。


接下來可以修改pi.cpp代碼,然后checkin,你就會發現這個文件的BASE和COMMITTED會同時增加,並且相等。如下





  1. -bash-2.05b$ svn st -v

  2.            134057   134034 deyi.long    .

  3.            134057   102502 deyi.long    proxyio.procinfo

  4.            134058   134058 deyi.long    pi.cpp

  5.            134057   102674 deyi.long    Makefile

  6.            134057   114428 deyi.long    run.sh


接下來在此目錄下執行update動作,你就會發現所有文件的BASE都進行了升級,但是COMMITTED沒有改變,如下





  1. -bash-2.05b$ svn up

  2. At revision 134058.


  3. -bash-2.05b$ svn st -v

  4.            134058   134034 deyi.long    .

  5.            134058   102502 deyi.long    proxyio.procinfo

  6.            134058   134058 deyi.long    pi.cpp

  7.            134058   102674 deyi.long    Makefile

  8.            134058   114428 deyi.long    run.sh


通過上述用例,可以看出BASE表示在working-copy中每個文件基准版本,會經常變動,並且有統一working-copy的版本的意圖。另外,也說明對每個文件來說,BASE就是COMMITTED的別名,但是它可以和其他文件BASE保持一致,用於統一,批量處理。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM