版本衝突原因: 假設
a、b兩個使用者都在版本號為
100的時候,更新了
kingtuns.txt
這個檔案,
a使用者在修改完成之後提交
kingtuns.txt
到伺服器,這個時候提交成功,這個時候
kingtuns.txt
檔案的版本號已經變成
101了。同時
b使用者在版本號為
100的
kingtuns.txt
檔案上作修改,修改完成之後提交到伺服器時,由於不是在當前最新的
101版本上作的修改,所以導致提交失敗。
版本衝突現象:
衝突發生時,
subversion
會在當前工作目錄中儲存所有的目標檔案版本
[上次更新版本、當前獲取的版本
(即別人提交的版本
)、自己更新的版本、目標檔案]。
假設檔名是
kingtuns.txt
對應的檔名分別是:
kingtuns.txt.r101
kingtuns.txt.r102
kingtuns.txt.mine
kingtuns.txt
。同時在目標檔案中標記來自不同使用者的更改。
版本衝突解決:
場景: 1
、現在a、b
兩個使用者都更新
kingtuns.txt
檔案到本地。
、文件中原始檔案內容如下:
、a使用者修改檔案,新增內容「
a使用者修改內容」完成後提交到伺服器
b使用者修改檔案,新增內容「
b使用者修改內容」完成後提交到伺服器
b使用者提交更新至伺服器時提示如下:
b使用者將檔案提交至伺服器時,提示版本過期:首先應該從版本庫更新版本,然後去解決衝突,衝突解決後要執行
svn resolved
(解決),然後在簽入到版本庫。在衝突解決之後,需要使用
svn resolved
(解決)來告訴
subversion
衝突解決,這樣才能提交更新。
解決衝突有三種選擇:
a、放棄自己的更新,使用
svn revert
(回滾),然後提交。在這種方式下不需要使用
svn resolved
(解決)
b、放棄自己的更新,使用別人的更新。使用最新獲取的版本覆蓋目標檔案,執行
resolved filename
並提交(
選擇檔案—右鍵—解決)。
c、手動解決:衝突發生時,通過和其他使用者溝通之後,手動更新目標檔案。然後執行
resolved filename
來解除衝突,最後提交。
解決步驟如下: 1
、在當前目錄下執行「
update
」(更新)操作
、在衝突的檔案上(選中檔案
--右鍵選單—
tortoisesvn
—edit conflicts
(解決衝突)),出現如下視窗
theirs
視窗為伺服器上當前最新版本
mine
視窗為本地修改後的版本
merged
視窗為合併後的檔案內容顯示
、如果要使用伺服器版本,在
theirs
視窗選中差異內容,右鍵,選擇
use this text block
(使用這段文字塊)。
同理如果要使用本地版本,在協商後,在
mine
視窗右鍵,選擇
use this textblock
(使用這段文字塊)。
、修改完成後,儲存
kingtuns.txt
檔案內容。
5、在b
使用者的衝突目錄下,選中檔案
--右鍵選單—
tortoisesvn
—resolved
(解決)。會列出衝突的檔案列表,如果確認已經解決,點ok。
6、衝突解決
、提交解決衝突後的檔案。
如何降低衝突解決的複雜度: 1
、當文件編輯完成後,盡快提交,頻繁的提交
/更新可以降低在衝突發生的概率,以及發生時解決衝突的複雜度。 2
、在提交時,寫上明確的
message
,方便以後查詢使用者更新的原因,畢竟隨著時間的推移,對當初更新的原因有可能會遺忘 3
、養成良好的使用習慣,使用
svn時每次都是先提交,後更新。每天早上開啟後,首先要從版本庫獲取最新版本。每天下班前必須將已經編輯過的文件都提交到版本庫。
svn衝突問題詳解 SVN版本衝突解決詳解
解決版本衝突的命令。在衝突解決之後,需要使用svnresolved來告訴subversion衝突解決,這樣才能提交更新。衝突發生時,subversion會在workcopy中儲存所有的目標檔案版本 上次更新版本 當前獲取的版本,即別人提交的版本 自己更新的版本 目標檔案。開發人員都知道 管理工具是開...
SVN版本衝突解決詳解
版本衝突原因 假設 a b兩個使用者都在版本號為 100的時候,更新了 kingtuns.txt 這個檔案,a使用者在修改完成之後提交 kingtuns.txt 到伺服器,這個時候提交成功,這個時候 kingtuns.txt 檔案的版本號已經變成 101了。同時 b使用者在版本號為 100的 kin...
SVN版本衝突解決詳解
版本衝突原因 假設a b兩個使用者都在版本號為100的時候,更新了kingtuns.txt這個檔案,a使用者在修改完成之後提交kingtuns.txt到伺服器,這個時候提交成功,這個時候kingtuns.txt檔案的版本號已經變成101了。同時b使用者在版本號為100的kingtuns.txt檔案上...