1. 程式人生 > >SVN解決衝突的幾種情況

SVN解決衝突的幾種情況

SVN是非常實用也好用的版本管理工具,但不是萬能的,有時候還需要你手動解決。

一般在你準備提交一個新版本時,首先update一遍,有時候update完之後發現跟本地版本有衝突,這時候,在有衝突檔案的地方存在4個檔案:

1)petgeniusupdatelayer.ccb,這是衝突的檔案,也就是你update下來的檔案跟本地的檔案合併之後存在衝突的檔案,這個檔案需要你去處理;

2)petgeniusupdatelayer.ccb.mine,這是在update之前本地修改的檔案;

3)petgeniusupdatelayer.ccb.r19732,這是該檔案的初始版本;

4)petgeniusupdatelayer.ccb.r20390,這是SVN伺服器上你update下來的檔案(伺服器最新版本的檔案);

一般衝突出現的原因是你和另外一個比你先commit的傢伙修改到了這個檔案的同一個地方,這個時候你有3種解決方法:

1)手動合併程式碼,這就要求你在不改動另外一個傢伙程式碼目的的情況下,把自己的程式碼加進去,或者你們協商修改,一般問題不大,不要犯迷糊就可以;

然後再svn裡,remark as resolved;重新檢查一遍即可commit;

2)無視新版本,使用你自己的版本,這時,只需要把字尾名為.mine的檔案去掉這個字尾名,替代原始檔petgeniusupdatelayer.ccb即可;

這種情況也有,比如某個模組只有你自己負責,別人不會動這個地方的程式碼等,但是由於不小心改動了一些(經常是別人要測試,自己改程式碼,改完之後忘記改回來就提交了)。

3)放棄本地版本,petgeniusupdatelayer.ccb.r20390去掉字尾名就是最新版本,或者直接全部刪除,重新update一份,這代表完全放棄自己的修改,完全做無用功啊;

為了儘量避免衝突,減少麻煩:

1)提交的時候要注意檢查自己本地修改,每個修改的地方做到心中有數,不需要提交的程式碼,比如列印Log,測試程式碼注意及時刪除;

2)每次開始修改一份程式碼時,儘量保證初始程式碼為最新,這樣可以儘可能減少衝突的發生;