摘 SVN提交與版本衝突

2022-03-12 00:46:25 字數 2432 閱讀 3065

1.要提交的內容備份到專案之外[為還原版本做準備]

2.還原[回到之前版本]

3.更新[更新版本號和版本]

4.填充內容[即 將自己之前備份的內容填充專案對應處]

5.提交

6.ok

假設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檔案到本地。

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

3、a使用者修改檔案,新增內容「a使用者修改內容」完成後提交到伺服器

4、b使用者修改檔案,新增內容「b使用者修改內容」完成後提交到伺服器

b使用者提交更新至伺服器時提示如下:

b使用者將檔案提交至伺服器時,提示版本過期:首先應該從版本庫更新版本,然後去解決衝突,衝突解決後要執行svn resolved(解決),然後在簽入到版本庫。在衝突解決之後,需要使用svn resolved(解決)來告訴subversion衝突解決,這樣才能提交更新。

解決衝突有三種選擇:

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

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

c、手動解決:衝突發生時,通過和其他使用者溝通之後,手動更新目標檔案。然後執行resolved filename來解除衝突,最後提交。

解決步驟如下:

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

2、  在衝突的檔案上(選中檔案--右鍵選單—tortoisesvn—edit conflicts(解決衝突)),出現如下視窗

theirs視窗為伺服器上當前最新版本

mine視窗為本地修改後的版本

merged視窗為合併後的檔案內容顯示 

3、  如果要使用伺服器版本,在theirs視窗選中差異內容,右鍵,選擇use this text block(使用這段文字塊)。

同理如果要使用本地版本,在協商後,在mine視窗右鍵,選擇use this text block(使用這段文字塊)。

4、  修改完成後,儲存kingtuns.txt檔案內容。

5、  在b使用者的衝突目錄下,選中檔案--右鍵選單—tortoisesvn—resolved(解決)。會列出衝突的檔案列表,如果確認已經解決,點ok。

6、  衝突解決

7、提交解決衝突後的檔案。

如何降低衝突解決的複雜度:

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

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

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

原文文獻:

[此文純屬拷貝,以防止此文丟失。]

svn版本衝突問題

在實際專案開發中,如果2個人同時修改某個檔案就會產生版本衝突問題 比如程式設計師a,b同時修改檔案hello.txt,a在10點提交了一次,但是b不知道a已經提交了,他的版本還是a提交之前的版本,所以他在10點30也提交自己的,這時候就會發生版本衝突。如何解決這個問題 1.合理安排專案開發時間 a在...

SVN版本衝突解決

版本衝突原因 假設a b兩個使用者都在版本號為 100的時候,更新了 kingtuns.txt 這個檔案,a使用者在修改完成之後提交 kingtuns.txt 到伺服器,這個時候提交成功,這個時候 kingtuns.txt 檔案的版本號已經變成 101了。同時 b使用者在版本號為 100的 king...

svn 更新提交檔案衝突

檔案衝突定義 svn up更新伺服器文件到本地的時候發現本地的檔案有所改動,和svn伺服器不同步 伺服器會報衝突,讓你覺得已誰的為準,根據實際情況我們需要選擇是以伺服器還是以本地 為準 報錯 conflict discovered in framework entity config entitye...