svn中衝突的解決

2021-08-30 03:57:22 字數 1782 閱讀 6388

可以使用svn status -u命令來檢視一下某個問題是否會有衝突發生。在使用svn update 的時候,會出現如下一些資訊:

$ svn update

u  install

g  readme

c  bar.c

updated to revision 46.

那麼,u 開頭的資訊提示你,這個檔案在你本地沒有修改過,檔案已經根據版本庫的新版本更新了。g 開頭的資訊提示你,這個檔案在你本地已經修改過,但是和版本庫中對應的版本並沒有衝突的地方,svn已經合併更新了。而c 開頭的資訊提示你,這個檔案有點麻煩,你在本地的修改和版本庫中的版本修改的地方重疊了,也就是說,你修改了某一行,你的同事也修改了同一行。這個就需要你自己手工去解決了。當衝突發生時,要注意到有三件事情可以幫助你解決問題。

a.subversion會給這個檔案作出c標記。

b.如果subversion認為這個檔案時可以合併的,它會乙個衝突標記(特殊的橫線來分開衝突的**塊)

c.對每乙個衝突的檔案,subversion放置三個額外的未版本化檔案到你的工作拷貝。

filename.mine

你更新前的檔案,沒有衝突標誌,只是你最新更改的內容。(如果這個檔案不可以合併,.mine檔案不會建立,因為它和工作檔案相同。)

filename.roldrev

這個是你做更新操作以前的base版本,就是你在上次更新之後未作更改的版本。

filename.rnewrev

這是subversion從伺服器剛剛收到的版本。這個版本就是版本庫的head版本。

例如,如果sally修改了乙個檔案sandwich.txt, 而harry也剛剛修改了這個檔案的相同位置並提交到伺服器。那麼sally在做這個檔案的update操作的時候會得到三個額外的檔案sandwich.txt.mine、sandwich.txt.r1、sandwich.txt.r2。並且在提交的時候會遭到伺服器的拒絕,因為這個檔案的衝突問題還沒有得到解決。要解決這個衝突,可以選擇:

a. 手工合併衝突檔案(檢查和修改檔案中的衝突標誌)。

b.用乙個臨時檔案(三個中的乙個)覆蓋你的工作檔案。

c.執行svn revert 來放棄所有的修改。

一旦解決了你的衝突,需要通過命令svn resolved讓subversion知道並刪除三個臨時檔案。這時才可以提交。

下面再說說手工合併衝突。開始的時候讓人覺得害怕,但做一段時間之後,就覺得不那麼煩人了。

看看如下文字:

mayonnaise

lettuce

tomato

provolone

<<<<<<< .mine

salami

mortadella

prosciutto

*****==

sauerkraut

grilled chicken

>>>>>>> .r2

creole mustard

一連串的大於、小於、等於號是衝突標記,這些資料得全部刪除才可以提交。其中,

<<<<<<< .mine

salami

mortadella

prosciutto

*****==

是你在衝突區裡面做的修改。

sauerkraut

grilled chicken

>>>>>>> .r2

是別人在衝突區做的修改。

在衝突區中,或許你需要和你的同事溝通來安排衝突區的文字內容,如果是程式**,你需要和同事商量一下,中間的這段**到底應該是什麼樣子的。

所有衝突區得到合理的解決之後,你就可以提交你的檔案了。

SVN中衝突的解決

本人使用svn的時間不是很長,在使用之前也僅僅是粗淺的了解過這個軟體。從今年的8月份開始,由於乙個專案使用eclipse 3.1,跨地域的開發,為了適應不同的開發人員處於不同的地理位置,因此我們使用svn作為團隊開發的管理工具。開始使用時,僅僅是邊學邊用,遇到不懂的地方再去查詢資料。今天由於有點時間...

svn衝突解決

by lone on june 21,2011 1 如何產生衝突 當開發人員a和開發人員b從版本庫同時檢出文件1.txt,而a和b同時修改了1.txt的同一地方,後提交的一方會在拷貝副本中產生衝突。兩個工作拷貝,a拷貝中檔案1.txt內容為 dfqerq 123dfwre b拷貝中檔案1.txt內容...

svn解決衝突

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