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