SVN分支與合并問題專家大講堂
本節(jié)和大家學(xué)習(xí)一下SVN分支與合并的相關(guān)內(nèi)容,主要介紹一下合并以及SVN合并分支應(yīng)注意的問題,歡迎大家一起來學(xué)習(xí)SVN分支與合并方面的知識。
SVN分支與合并
合并
合并包含兩點(diǎn),首先兩個(gè)版本庫樹比較,然后將區(qū)別應(yīng)用到本地拷貝。
這個(gè)命令包括三個(gè)參數(shù):初始的版本樹(通常叫做比較的左邊),最終的版本樹(通常叫做比較的右邊),一個(gè)接收區(qū)別的目標(biāo)拷貝(通常叫做合并的目標(biāo))。
一旦這三個(gè)參數(shù)指定以后,兩個(gè)目錄樹將要做比較,比較結(jié)果將會作為本地修改應(yīng)用到目標(biāo)工作拷貝,當(dāng)命令結(jié)束后,結(jié)果同你手工修改或者是使用svnadd或svndelete沒有什么區(qū)別,如果你喜歡這結(jié)果,你可以提交,如果不喜歡,你可以使用svnrevert恢復(fù)修改。
合并的工作是把主線或者分支上合并范圍內(nèi)的所有改動(dòng)列出,并對比當(dāng)前副本的內(nèi)容,由合并者手工修改沖突。如果當(dāng)前工作副本是主線的,則合并的范圍是分支上的改動(dòng),如果工作副本是分支的,則合并范圍是主線上的改動(dòng)
(1)主干合并到分支
看一下SVN分支與合并中主干如何合并到分支。如果是需要將主線的改動(dòng)合并到分支上,需要在分支的工作副本下進(jìn)行合并,合并的范圍是需要從主線上上次合并的版本到當(dāng)前主線上***的版本,如果主線和分支都修改了相同的文件,合并后會出現(xiàn)沖突,然后解決沖突,如果主線修改但是分支沒有修改,則主線上合并的變更內(nèi)容會增加到當(dāng)前副本中,提交,如果是***次合并,則起始版本號是上次建立分支的版本號
(2)分支合并到主干
如果是需要將分支的改動(dòng)合并到主線上,需要在主線的工作副本下進(jìn)行合并,合并的范圍是需要從分支上上次合并的版本到當(dāng)前分支上***的版本,合并后會出現(xiàn)沖突(沖突的前提如上種情況),然后解決沖突,提交,如果是***次合并,則起始版本號是上次建立分支的版本號
SVN分支與合并中合并分支時(shí)很關(guān)鍵的一點(diǎn)
在使用TortoiseSVN對Subversion進(jìn)行分支合并時(shí),Merge界面上有兩個(gè)選項(xiàng):From和To。這兩個(gè)選項(xiàng)應(yīng)該如何設(shè)定呢?
對于合并的這操作,Subversion上對其有如下的解釋:
引用
迷惑的主要原因是這個(gè)命令的名稱,術(shù)語“合并”不知什么原因被用來表明分支的組合,或者是其他什么神奇的數(shù)據(jù)混合,這不是事實(shí),一個(gè)更好的名稱應(yīng)該是svndiff-and-apply,這是發(fā)生的所有事件:首先兩個(gè)版本庫樹比較,然后將區(qū)別應(yīng)用到本地拷貝。
這個(gè)命令包括三個(gè)參數(shù):
初始的版本樹(通常叫做比較的左邊),
最終的版本樹(通常叫做比較的右邊),
一個(gè)接收區(qū)別的工作拷貝(通常叫做合并的目標(biāo))。
一旦這三個(gè)參數(shù)指定以后,兩個(gè)目錄樹將要做比較,比較結(jié)果將會作為本地修改應(yīng)用到目標(biāo)工作拷貝,當(dāng)命令結(jié)束后,結(jié)果同你手工修改或者是使用svnadd或svndelete沒有什么區(qū)別,如果你喜歡這結(jié)果,你可以提交,如果不喜歡,你可以使用svnrevert恢復(fù)修改。還有更詳細(xì)的說明:
引用
為了表示你的分支上的修改,你只需要比較分支的初始狀態(tài)與最終狀態(tài),在你的分支上使用svnlog命令,你可以看到你的分支在341版本建立,你的分支最終的狀態(tài)用HEAD版本表示,這意味著你希望能夠比較版本341和HEAD的分支目錄,然后應(yīng)用這些分支的修改到主干目錄的工作拷貝。
其實(shí)使用這個(gè)功能后的過程是把To的版本和From版本進(jìn)行對比,然后把之間的差異合并到當(dāng)前的版本中。比如要把一個(gè)分支的修改全部給合并進(jìn)來,F(xiàn)rom就應(yīng)該選擇主線創(chuàng)建了分支的那個(gè)版本,To就應(yīng)該選擇分支的Head版本。如果版本選擇的不正確,比如說From選擇了主線的Head版本,就會把所有分支和主線Head不同的文件都覆蓋到主線上來,造成主線上修改信息的丟失。本節(jié)關(guān)于SVN分支與合并內(nèi)容介紹完畢。
【編輯推薦】