cvs檔案提交衝突解決方案
衝突檔案解決方案
目的:便於開發人員在遇到多人同時修改同一檔案時進行正確的協調開發。
衝突現象:提交時提示
“cvs commit: sticky tag `1.1' for file `temp.txt' is not a branch
cvs [commit aborted]: correct above errors first!”類似提示的錯誤資訊。
衝突原因:本地檔案與伺服器中檔案版本不一致導致,導致這種不一致的原因就是多人修改同一檔案內容,第一個人修改完成提交後,其他人將自己修改的該檔案再提交,便產生了檔案版本衝突。
解決衝突辦法(一)
思路:根據wincvs自動生成的比較文件,進行協商修改解決衝突。
注意:有時沒有出現合併的檔案(可能為內容格式導致),可採取其他方法解決衝突。
操作如下:
操作:
當提交時,發現檔案衝突提示後,首先,更新該檔案,更新時不要選中任何更新選項。如下圖:
確定後,衝突檔案進行了版本比較合併,圖示變化為:“ ”。並在本地會產生一個名稱為“.#檔名.本地版本”的備份檔案。開啟合併檔案後,可以看到這個檔案的兩個版本對比情況,如下圖:
“<<<<<<<”前為兩個版本相同部分,“=======”前為本地版本修改的內容,“>>>>>>>”前為當前伺服器最新版本修改的內容。根據上述提示,便於開發人員進行正確合併。建議找到提交最新版本的同事,進行口頭商議確認後,修改該檔案,然後提交到配置庫中,從而解決衝突。
與1操作類似,區別是,在更新後cvs首先會產生一個名稱為“.#檔名.本地版本”的備份檔案,然後當前檔案被更新為最新版本的檔案內容。圖示為“ ”。此時可參考“解決衝突辦法(二)”進行相關操作。
解決衝突辦法(二)
思路:將本地檔案與伺服器檔案進行手動版本比較,從而找出相異處,進行協商合併後提交。
注意:若衝突檔案沒有差生合併檔案建議用此方法進行。
操作:
當提交時,發現檔案衝突提示後,更新該檔案,更新時不要選中任何更新選項。此時該檔案圖示變紅“ ”,無備份檔案生成。這時需要我們手動進行該檔案的版本比較。
首先,選中該檔案後,點選Query-Diff……,如下圖:
進行本地版本與遠端伺服器版本進行對比。左邊的資訊填寫遠端伺服器版本號確定即可,這時在命令列視窗就會出現比較資訊。如下圖:
開發人員可以通過比較結果進行相應協商修改後,提交相關內容。
解決衝突方法(三)
思路:利用建立分支的方法進行開發,多模組多檔案同時開發,避免衝突,只在最後將分支模組合併時解決衝突。
利弊:適用於模組的兩個版本同時進行開發,不適用於頻繁合併的專案。
操作:
第一步、建立分支
選中需要建立分支的檔案或資料夾,然後點選Modify—>Create a branch…,如圖:
點選後在彈出的窗體裡輸出要建立的分支名稱,注意分支名稱的頭一個字元必須為字母。如下圖:
確定後,分支即建立完成。
第二步、將需要並行開發的檔案或資料夾提交到分支上
選中需要提交的檔案或資料夾,右鍵點選他們,選擇commit,出現如下窗體:
選擇Commit options選項卡,勾選Force revision/branch:選項後在右側輸入分支名稱,確定即可。提交後可以通過圖形日誌方式來檢視我們剛剛提交的這個檔案的版本分支狀態。如圖:
這樣便可清晰的看到檔案的歷史版本資訊,便於採取適當的開發管理措施。
轉載於:https://my.oschina.net/tadcat/blog/150627