經常有人會說,樹衝突是很難解決的一類衝突,其實一旦了解了其原理,要解決也不難。先回顧下對於樹衝突的定義。
樹衝突:當一名開發人員移動、重新命名、刪除乙個檔案或資料夾,而另一名開發人員也對它們進行了移動、重新命名、刪除或者僅僅是修改時就會發生樹衝突。
出現衝突時,一般會提示衝突的資訊是什麼。過後我們可以使用svn st來檢視當前狀態。svn st的各種狀態代表什麼,請參考此博文svn st狀態詳解。
先介紹一下概念
delete : 其中目錄結構變化,都認為是delete
edit: 是指修改檔案
local : 是你本地修改
incoming :是別人修改,你要update或merge進來。
這樣應該有4個組合,但是edit對edit的組合應該是file conflict,這個容易解決,不在tree conflict 討論範圍,所以有3種組合。再需要區別update和merge,就有了6種情況。分別是
local delete, incoming edit upon update
local edit, incoming delete upon update
local delete, incoming delete upon update
local missing, incoming edit upon merge
local edit, incoming delete upon merge
local delete, incoming delete upon merge
分別對這幾種情形解釋如下:
1.local delete, incoming edit upon update(本地刪除,更新後傳入修改)
產生原因:1.a修改檔案foo.c後提交到版本庫中,b將foo.c重新命名為bar.c或者刪除了foo.c或者直接將foo.c的父目錄foo直接刪除 2.b更新工作副本會提示該衝突,在working copy顯示為foo.c在本地刪除,被標記為衝突。如果是重新命名,則bar.c被標記為新增,但是不包括a的修改。
解決:a與b要確認是否採用a的修改與是否重新命名。如果採用a的修改,並且要重新命名則修改後,標記衝突解決,svn resolved,最後提交;如果不採用a的修改,直接標記衝突解決提交即可。
2.local edit, incoming delete upon update (本地編輯,更新後傳入刪除)
產生原因:1.a對foo.c重新命名為bar.c並提交到版本庫(或者a將foo.c的上級目錄foo修改為bar),b在他的工作副本中對foo.c進行修改。2.b提交前更新,會提示如此錯誤。
解決:同樣需要兩個人進行協商後修改。
3.local delete, incoming delete upon update (本地刪除,更新後傳入刪除)
產生原因:1.a將foo.c重新命名為bar.c後提交,b對foo.c重新命名為bix.c。2.b更新本地工作副本是會提示該樹衝突。
解決:通過日誌查詢檔案被刪除即重新命名的原因,a與b協商後最終確認採用哪個名稱。
4.local missing, incoming edit upon merge (本地丟失,合併後傳入修改)
產生原因:1.a在主幹上修改foo.c,b在分支上將foo.c重新命名為bar.c。2.b合併a在主幹上的修改。
解決:b先標記衝突解決,然後將foo.c拷貝至本地,將a的修改合併至自己的檔案中或者直接放棄a的修改,採用自己的修改。
5.local edit, incoming delete upon merge (本地修改,合併後傳入刪除)
產生原因:1.a將foo.c重新命名為bar.c(或者將foo.c的父目錄foo改為bar),b在分支上修改foo.c。2.b合併a的修改時提示該衝突。bar.c被標記為增加,foo.c被標記為衝突。
解決:同樣根據日誌查詢到修改的源頭,兩人協商後解決。
6.local delete, incoming delete upon merge (本地刪除,合併後傳入刪除)
產生原因:1.a在主幹上將foo.c重新命名為bar.c,b在分支上將foo.c重新命名為bix.c。2.b合併a的修改時會提示衝突。重新命名後的檔案被標記為新增,原來檔案被標記為樹衝突。
解決:通過日誌查詢到檔案被改名的時刻,兩人協商後解決。
tomcat登入問題解決辦法
配置好 tomcat 7.0 後,在 tomcat users.xml 中配置使用者角色來訪問 localhost 8080 的這樣三個按鈕總出現問題 server status host manager 要麼是三個都不能訪問,要麼是只能訪問其中乙個,或者兩個。後來發現是角色沒有新增全,特別是針對第...
php 亂碼 問題解決辦法
php亂碼問題解決辦法 必須使使用的 資料庫 文字編輯 瀏覽器 資料獲取 編碼格式一致。如設定成 utf 8的方法為 1.資料庫建立時設定 字符集為utf 8 2.在專案屬性 或檔案屬性 文字檔案編碼處設定成utf 8 如果沒用ide工具編寫,可以不設定此項 3.設定網頁顯示編碼格式 header ...
啟動問題解決辦法
前提 xx公司在做xx專案中遇到乙個問題導致系統無法正常開機,本文件就此問題給出解決方案 症狀 開機提示找不到ntoskrnl.exe 原因 主引導硬碟在第二個分割槽,重新分割槽,或者修改boot.ini檔案即可解決問題 解決方法 1.對出現問題的計算機執行重新啟動的操作 2.按f12或者放入引導光...