代碼管理之 SVN resolve conflict(SVN 衝突)



以前都是在windows上操做SVN來着,轉移到linux上以後出現衝突,後查瞭解決辦法:

ZZ from:http://www.aixchina.net/club/thread-25902-1-1.html
這裏,先說說衝突解決。

怎麼會發生衝突呢?

兩我的修改了不一樣文件?不會有衝突,他們不相關。

兩我的同時修改了同一個文件的不一樣位置?不會有衝突,SVN很聰明。

兩我的同時修改了同一個文件的相同位置?Bing!衝突來了。

工程師A修改了a.txt的第一行,提交了。

工程師B也修改了a.txt的第一行,而後執行svn up,這時SVN提示了:(如下,你開始扮演工程師B的角色了)
$ svn up
在 「a.txt」 中發現衝突。
選擇: (p) 推遲,(df) 顯示所有差別,(e) 編輯,
(mc) 個人版本, (tc) 他人的版本,
(s) 顯示所有選項:

我通常選擇p(推遲),即引入衝突到本地,不過不會影響到SVN服務器端,能夠放心。

OK,開始解決衝突了。

這時,會生成幾個文件:

a.txt

a.txt.mine a.txt.r6328 a.txt.r6336

其中a.txt中包含了工程師A、B的全部修改,以<<<<<<<、=======、>>>>>>>分隔。

a.txt.mine是工程師B的修改,也就是未update前的a.txt。

a.txt.r6328 是工程師A提交前的版本,即未致使衝突的版本。

a.txt.r6336是工程師A提交後的版本,即致使衝突的版本。

通常,查看a.txt就能夠看到衝突的詳情了:

[yicheng@chengyi svntest]$ cat a.txt

<<<<<<< .mine

i also modify ,agndagnagasdg;

=======

i modify this line;

>>>>>>> .r6336

以上,<<<<<<< .mine和=======之間是工程師B(當前的「你」)修改的內容,=======與>>>>>>> .r6336之間是工程師A修改的內容。這時,最好的辦法是,叫上工程師A,大家一塊兒肯定這些修改是否都須要,是否相互兼容,而後留下須要的部分,刪 除<<<<<<< .mine、=======和>>>>>>> .r6336。

而後,測試,測試!肯定沒問題以後,就能夠告訴SVN,你解決衝突了:

svn resolve –accept working a.txt (該命令會刪除a.txt.mine a.txt.r6328 a.txt.r6336)

svn ci -m ’some comment’ a.txt

這裏須要注意的是,a.txt.mine a.txt.r6328 a.txt.r6336這幾個文件的存在表明着有衝突產生。若是不解決衝突,就手 工刪除它們,SVN服務器也會很傻的認爲你解決了衝突,容許你繼續以後 的工做。可是,衝突依舊存在,你的a.txt中不但有別人的修改,還有那些討厭的<=>符號。

在衝突未解決前,試圖提交代碼是確定會失敗的:

$ svn ci -m 」

svn: 提交失敗(細節以下):

svn: 提交終止: 「/path/to/svntest/a.txt」 處於衝突狀態



轉自:http://blog.sina.com.cn/s/blog_75991d43010157bz.html以前都是在windows上操做SVN來着,轉移到linux上以後出現衝突,後查瞭解決辦法:

ZZ from:http://www.aixchina.net/club/thread-25902-1-1.html
這裏,先說說衝突解決。

怎麼會發生衝突呢?

兩我的修改了不一樣文件?不會有衝突,他們不相關。

兩我的同時修改了同一個文件的不一樣位置?不會有衝突,SVN很聰明。

兩我的同時修改了同一個文件的相同位置?Bing!衝突來了。

工程師A修改了a.txt的第一行,提交了。

工程師B也修改了a.txt的第一行,而後執行svn up,這時SVN提示了:(如下,你開始扮演工程師B的角色了)
$ svn up
在 「a.txt」 中發現衝突。
選擇: (p) 推遲,(df) 顯示所有差別,(e) 編輯,
(mc) 個人版本, (tc) 他人的版本,
(s) 顯示所有選項:

我通常選擇p(推遲),即引入衝突到本地,不過不會影響到SVN服務器端,能夠放心。

OK,開始解決衝突了。

這時,會生成幾個文件:

a.txt 
html

 a.txt.mine  a.txt.r6328  a.txt.r6336

其中a.txt中包含了工程師A、B的全部修改,以<<<<<<<、=======、>>>>>>>分隔。

a.txt.mine是工程師B的修改,也就是未update前的a.txt。

a.txt.r6328 是工程師A提交前的版本,即未致使衝突的版本。

a.txt.r6336是工程師A提交後的版本,即致使衝突的版本。

通常,查看a.txt就能夠看到衝突的詳情了:

[yicheng@chengyi svntest]$ cat a.txt

<<<<<<< .mine

i also modify ,agndagnagasdg;

=======

i modify this line;

>>>>>>> .r6336

以上,<<<<<<<.mine和=======之間是工程師B(當前的「你」)修改的內容,=======與>>>>>>>.r6336之間是工程師A修改的內容。這時,最好的辦法是,叫上工程師A,大家一塊兒肯定這些修改是否都須要,是否相互兼容,而後留下須要的部分,刪 除<<<<<<<.mine、=======和>>>>>>>.r6336。

而後,測試,測試!肯定沒問題以後,就能夠告訴SVN,你解決衝突了:

svn resolve –accept working a.txt (該命令會刪除a.txt.mine  a.txt.r6328  a.txt.r6336)

svn ci -m ’some comment’ a.txt

這裏須要注意的是,a.txt.mine  a.txt.r6328  a.txt.r6336這幾個文件的存在表明着有衝突產生。若是不解決衝突,就手 工刪除它們,SVN服務器也會很傻的認爲你解決了衝突,容許你繼續以後 的工做。可是,衝突依舊存在,你的a.txt中不但有別人的修改,還有那些討厭的<=>符號。

在衝突未解決前,試圖提交代碼是確定會失敗的:

$ svn ci -m 」

svn: 提交失敗(細節以下):

svn: 提交終止: 「/path/to/svntest/a.txt」 處於衝突狀態
 
轉自:http://blog.sina.com.cn/s/blog_75991d43010157bz.html
相關文章
相關標籤/搜索