SVN版本沖突解決詳解

jopen 11年前發布 | 23K 次閱讀 SVN Subversion 版本控制系統

版本沖突原因:

假設AB兩個用戶都在版本號為100的時候,更新了kingtuns.txt這個文件,A用戶在修改完成之后提交kingtuns.txt到服務器,這個時候提交成功,這個時候kingtuns.txt文件的版本號已經變成101了。同時B用戶在版本號為100kingtuns.txt文件上作修改,修改完成之后提交到服務器時,由于不是在當前最新的101版本上作的修改,所以導致提交失敗。

版本沖突現象:

沖突發生時,subversion會在當前工作目錄中保存所有的目標文件版本[上次更新版本、當前獲取的版本(即別人提交的版本)、自己更新的版本、目標文件]

假設文件名是kingtuns.txt

對應的文件名分別是:

kingtuns.txt.r101

kingtuns.txt.r102

kingtuns.txt.mine

kingtuns.txt。同時在目標文件中標記來自不同用戶的更改。

版本沖突解決:

場景:

1、現在AB兩個用戶都更新kingtuns.txt文件到本地。

SVN版本沖突解決詳解

2、文檔中原始文件內容如下:

SVN版本沖突解決詳解

3A用戶修改文件,添加內容“A用戶修改內容”完成后提交到服務器

SVN版本沖突解決詳解

SVN版本沖突解決詳解

4B用戶修改文件,添加內容“B用戶修改內容”完成后提交到服務器

SVN版本沖突解決詳解

B用戶提交更新至服務器時提示如下:

SVN版本沖突解決詳解

B用戶將文件提交至服務器時,提示版本過期:首先應該從版本庫更新版本,然后去解決沖突,沖突解決后要執行svn resolved(解決),然后在簽入到版本庫。在沖突解決之后,需要使用svn resolved(解決)來告訴subversion沖突解決,這樣才能提交更新。

解決沖突有三種選擇:

A、放棄自己的更新,使用svn revert(回滾),然后提交。在這種方式下不需要使用svn resolved(解決)

B、放棄自己的更新,使用別人的更新。使用最新獲取的版本覆蓋目標文件,執行resolved filename并提交(選擇文件右鍵解決)

C、手動解決:沖突發生時,通過和其他用戶溝通之后,手動更新目標文件。然后執行resolved filename來解除沖突,最后提交。

解決步驟如下:

1、 在當前目錄下執行“update”(更新)操作

SVN版本沖突解決詳解

2、 在沖突的文件上(選中文件--右鍵菜單—TortoiseSVN—Edit conflicts(解決沖突)),出現如下窗口

Theirs窗口為服務器上當前最新版本

Mine窗口為本地修改后的版本

Merged窗口為合并后的文件內容顯示

SVN版本沖突解決詳解

3、 如果要使用服務器版本,在Theirs窗口選中差異內容,右鍵,選擇Use this text block(使用這段文本塊)。

同理如果要使用本地版本,在協商后,在Mine窗口右鍵,選擇Use this text block(使用這段文本塊)。

SVN版本沖突解決詳解

4、 修改完成后,保存kingtuns.txt文件內容。

5、 B用戶的沖突目錄下,選中文件--右鍵菜單—TortoiseSVN—Resolved(解決)。會列出沖突的文件列表,如果確認已經解決,點OK

SVN版本沖突解決詳解

6、 沖突解決

SVN版本沖突解決詳解

7、提交解決沖突后的文件。

SVN版本沖突解決詳解

如何降低沖突解決的復雜度:

1、當文檔編輯完成后,盡快提交,頻繁的提交/更新可以降低在沖突發生的概率,以及發生時解決沖突的復雜度。

2、在提交時,寫上明確的message,方便以后查找用戶更新的原因,畢竟隨著時間的推移,對當初更新的原因有可能會遺忘

3、養成良好的使用習慣,使用SVN時每次都是先提交,后更新。每天早上打開后,首先要從版本庫獲取最新版本。每天下班前必須將已經編輯過的文檔都提交到版本庫。

來自:http://blog.csdn.net/windone0109/article/details/4857044

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!