svn更新會覆蓋本地未提交代碼嗎,svn代碼提交和合并

 2023-10-18 阅读 33 评论 0

摘要:本文轉自:http://blog.sina.com.cn/yueyuedexiaonuanfang 多人開發時有可能遇到沖突 ? 1,重名文件? 提交失敗。 A添加一個111.txt提交成功了。版本庫可以看到。 svn更新會覆蓋本地未提交代碼嗎? B計劃添加111.txt,剛好和A上傳的重名了。 系統提示,操作失

本文轉自:http://blog.sina.com.cn/yueyuedexiaonuanfang

多人開發時有可能遇到沖突

?

1,重名文件? 提交失敗。

A添加一個111.txt提交成功了。版本庫可以看到。

svn更新會覆蓋本地未提交代碼嗎?SVN沖突解決

B計劃添加111.txt,剛好和A上傳的重名了。SVN沖突解決

系統提示,操作失敗。文件圖標左下角顯示一個“藍色加號”。

SVN沖突解決

idea中svn使用教程、 繼續“提交”,依然會提示 “操作失敗”。

如果“更新”會提示“沖突”警告。文件圖標左下角顯示黃色嘆號

SVN沖突解決

然后會發現,文件夾下多了幾個“奇怪”的文件,以“111”開頭。

SVN沖突解決

不用去管這個文件。解決完沖突,這些自然就沒有了。

解決沖突:解決沖突通常有兩種辦法,一種直接在文件上改,另一種用工具(TortoiseMerge、WinMerge)。

SVN沖突解決

解決沖突要與其它同事協商。

SVN沖突解決

比較沖突文本 、編輯沖突如上圖所示。左上角是版本庫里對應文件的內容,右上角是本地沖突文件的內容,下邊是合并(解決沖突)后的內容。 紅色部分表示是沖突的內容,要對這部分內容進行修改。

?

合并好文本后,將文件改為“已解決的”

SVN沖突解決
SVN沖突解決

然后會發現剛才那幾個以“111”開頭的奇怪文件不見了。

文件圖標左下角由“黃色嘆號”變為“紅色嘆號”。

SVN沖突解決

到此為止,沖突完全解決,可以正常提交(commit)。

SVN沖突解決
SVN沖突解決

2,重名文件 更新時出現沖突。

開發人員A? 已提交222.txt

SVN沖突解決

開發人員B 本地相關文件夾下也有222.txt。

該文件是他剛增加的,無版本信息。222.txt圖標左下角是個藍色的問號。

SVN沖突解決

在這種情形點“更新”

SVN沖突解決

“更新”會顯示成功,但是可以看到提示“已合并”。程序自動執行了“合并”操作。其實該操作并沒有真正執行。222.txt文件里的內容還是開發人員B編輯的文本。

SVN沖突解決

文件夾圖標左下角顯示一個紅色嘆號,已提醒當前操作人員。

進去后可以見到 222.txt文件圖標也有個紅色嘆號。

SVN沖突解決
?這時需要和其他人員商議,如何修改沖突。

SVN沖突解決

該情況下沒有“編輯沖突”(上圖所示),但有“更新至版本”和“svn還原”可以還原成服務器版本。

SVN沖突解決

或者手工編輯222.txt后,再次提交。

SVN沖突解決

SVN版本沖突解決詳解

?

svn提交選擇? 版本沖突原因:

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

?

版本沖突現象:

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

假設文件名是kingtuns.txt

對應的文件名分別是:

kingtuns.txt.r101

svn提交代碼、 kingtuns.txt.r102

kingtuns.txt.mine

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

?

svn代碼提交步驟, 版本沖突解決:

場景:

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

SVN沖突解決
2、文檔中原始文件內容如下

svn并代碼, SVN沖突解決
3、A用戶修改文件,添加內容“A用戶修改內容”完成后提交到服務器

SVN沖突解決
4、B用戶修改文件,添加內容“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時每次都是先提交,后更新。每天早上打開后,首先要從版本庫獲取最新版本。每天下班前必須將已經編輯過的文檔都提交到版本庫。




版权声明:本站所有资料均为网友推荐收集整理而来,仅供学习和研究交流使用。

原文链接:https://808629.com/153539.html

发表评论:

本站为非赢利网站,部分文章来源或改编自互联网及其他公众平台,主要目的在于分享信息,版权归原作者所有,内容仅供读者参考,如有侵权请联系我们删除!

Copyright © 2022 86后生记录生活 Inc. 保留所有权利。

底部版权信息