很多時候您會希望有另外一個複製的目錄來進行新的編修。等到確定這個分支的修改已經完畢了,再合併到原來的主要開發版本上。舉例來說,我們目前在working copy下面有如下的目錄及檔案:


圖像:Tsvn_25.png


現在,我們要為trunk這個目錄建立一個branch。假設我們希望這個目錄是在D:\working\my_prj\branch\my_new_branch_for_testing。首先我們可以在trunk目錄下面的空白處,或是直接在trunk的icon下面按下滑鼠右鍵。


圖像:Tsvn_26.png


在選擇Branch/Tag…這個項目後,您將會看到如下的對話框出現。


圖像:Tsvn_27.png


請先確認From WC at URL: 中的目錄是您要複製的來源目錄。接著,在To URL中輸入您要複製過去的路徑。通常我們會將所有的branch集中在一個目錄下面。以上面的例子來說,branch檔案都會集中在branch的子目錄下面。在To URL中您只需要輸入您要的目錄即可。目錄不存在時,會由SVN幫您建立。特別需要注意的是SVN因為斜線作為目錄分隔字元,而非反斜線。


接著在Log message輸入您此次branch的目的為何。按下OK就可以了。


如果成功,將可以看到下面的畫面:


圖像:Tsvn_28.png


按下OK就可以關閉這個視窗了。如果您此時立刻去working copy的branch子目錄下面,您將會失望的發現在該目錄下面並沒有剛剛指定的目錄存在。這是因為您working copy的部份還是舊的,您只需要在branch子目錄下面進行SVN update就可以看到這個新增的目錄了。新增的目錄就與原來的目錄無關了。您可以任意對他進行編輯,一直到您確認好所有在branch下面該做的工作都完成後,您可以選擇將這個branch merge回原來的trunk目錄,或者是保留它在branch中。


要merge回trunk目錄中,方法很簡單。以上面的例子來說,我們在D:\working\my_prj\trunk目錄空白處,按下滑鼠右鍵,選擇Merge:


圖像:Tsvn_29.png


接著可以看到如下的畫面:


圖像:Tsvn_30.png


這個畫面主要分為三個部份,前面的From: 與 To: 是要問您打算從Branch中的哪個版本到哪個版本,merge回原來的trunk目錄中。因此,From跟To的URL欄位應當都是指定原來branch的目錄下。剩下的就是指定要merge的revision範圍。以上面的例子而言,我們從Branch的Revision 7開始merge到Branch下面的最新版本。您可以透過,Dry run按鈕,試作一次Merge。這個merge只會顯示一些訊息,不會真正的更新到trunk的目錄去。只有按下Merge按鈕後,才會真正的將branch的檔案與trunk的檔案合併起來。


圖像:Tsvn_31.png


上面的訊息告訴我們在trunk目錄下面的yyyy.cpp及xxx1.cpp已經被更改過了。如果您在現在到trunk目錄下,會看到這兩個檔案處於被修改的狀態。


圖像:Tsvn_32.png


如果您確認這次的merge沒有問題,您可以直接使用commit來將這兩個被修改的檔案commit回SVN repository上。如果有問題,您可以直接修改這兩個檔案,直到確認ok了,再行commit。


圖像:Tsvn_33.png 圖像:Tsvn_34.png 圖像:Tsvn_35.png


一切順利的話,您就成功的將branch的檔案merge回trunk了。

狼翔月影 發表在 痞客邦 PIXNET 留言(0) 人氣()