svn衝突解決

2021-06-04 16:14:49 字數 2547 閱讀 2630

by lone

on june 21, 2011

1、  如何產生衝突

當開發人員a和開發人員b從版本庫同時檢出文件1.txt,而a和b同時修改了1.txt的同一地方,後提交的一方會在拷貝副本中產生衝突。

兩個工作拷貝,a拷貝中檔案1.txt內容為

dfqerq

123dfwre

b拷貝中檔案1.txt內容為

dfqerq

123erwrq

在b版本提交之前版本庫上的1.txt(base版本)內容為

dfqerq

b拷貝先提交版本到版本庫中,以至於最新版本內容變為

dfqerq

123erwrq

此時a版本也提交則會產生衝突,無法提交,需要先svn update,此時會在a拷貝中產生三個臨時檔案1.txt.rnew\1.txt.rold\1.txt.mine,其中1.txt.rnew是最新版本,1.txt.rold是base版本,1.txt.mine是a作者修改後的版本,在此例中內容為

dfqerq

123dfwre

而update之後a拷貝中的1.txt內容為

<<<<<<< .mine

dfqerq

123dfwre*****==

dfqerq

123erwrq>>>>>>> .r18

其中<<<<<<< .mine與*****==之間表示a修改後的內容,*****==與》 .r18之間是版本伺服器上的版本

2、解決衝突

第一種,利用update的選項進行衝突解決,也就是說不管當前拷貝副本是否是最新版本,都使用—accept引數作為衝突處理方式

–accept arg             : specify automatic conflict resolution action

(『postpone』, 『base』, 『mine-conflict』,

『theirs-conflict』, 『mine-full』, 『theirs-full』,

『edit』, 『launch』)

(p)  postpone    – mark the conflict to be resolved later //讓檔案在更新完成之後保持衝突狀態。

(df) diff-full   – show all changes made to merged file //使用標準區別格式顯示base修訂版本和衝突檔案本身的區別。

(e)  edit        – change merged file in an editor //用你喜歡的編輯器開啟衝突的檔案,編輯器是環境變數editor設定的。

(r)  resolved    – accept merged version of file //完成檔案編輯之後,通知svn你已經解決了檔案的衝突,它必須接受當前的內容—從本質上講就是你已經「解決了」衝突。

(mf) mine-full   – accept my version of entire file (ignore their change//丟棄新從伺服器接收的變更,並只使用你檢視檔案的本地修改。

(tf) theirs-full – accept their version of entire file (lose my changes)//丟棄你對檢視檔案的本地修改,只使用從伺服器新接收的變更。

(l)  launch      – launch external tool to resolve conflict//啟動乙個外接程式來執行衝突解決,這需要一些預先的準備。

(h)  help        – show this list //顯示所有在衝突解決時可能使用的命令。

第二種,在update時並不處理衝突,利用svn resolve解決衝突

1、利用svn resolve –accept base選擇base版本,即1.txt.rold作為最後提交的版本

–accept arg             : specify automatic conflict resolution source

(『base』, 『working』, 『mine-conflict』,

『theirs-conflict』, 『mine-full』, 『theirs-full』)

2、手工修改1.txt檔案,然後將當前拷貝即1.txt作為最後提交的版本

svn resolve –accept working 1.txt

3、svn resolve –accept theirs-full 1.txt 使用1.txt.rnew作為最後提交的版本

4、svn resolve –accept mine-full 1.txt 使用1.txt.mine作為最後提交的版本

5、svn resolve –accept mine-conflict 1.txt 使用1.txt.mine的衝突部分作為最後提交的版本

5、svn resolve –accept theirs-conflict 1.txt 使用1.txt.rnew的衝突部分作為最後提交的版本

第三種,使用svn revert取消變更

前兩天在解決衝突時用到了svn resolve這個命令,找到這篇文章主要是因為他對–accept引數的說明比較全

svn解決衝突

2個使用者修改了同乙個原始檔,a使用者先提交 然後b使用者提交 這個時候就出現衝突了。出現衝突之後,b使用者這邊出現了4個檔案 1個是原始檔本身 3個附加的原始檔 1.原始檔本身的意思是指,該檔案在解決衝突之後可以被提交。這個檔案裡面包含了本地的檔案,加上自己修改的 加上別人修改的 除此之外,還有小...

SVN 衝突解決

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

SVN 解決衝突

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