1. 程式人生 > >使用TortoiseSVN新建及合並分支圖文教程

使用TortoiseSVN新建及合並分支圖文教程

創建分支 mage 修改 red overflow 真的 隨機 href tro

 打開trunks目錄,在trunks目錄下新建兩個文本文件A.java,B.java:

技術分享圖片

  打開A.java輸入以下內容:

技術分享圖片

  B.java文件可以隨機輸入些,本例中主要用於觀察後續是否變化。

  兩個文件編輯完成後使用SVN Commit將更改提交到SVN:

技術分享圖片

  下面開始創建分支:

  1、在trunks上點擊右鍵,在TortoiseSVN菜單中選擇Branch/Tag;

  2、在To path輸入框中輸入新建分支的路徑,一般是:/branches/分支名,也就是相當於分支保存的路徑名;

  3、在下面選擇HEAD revision in the repository,為當前SVN中trunks目錄下最新的代碼建立分支,如果需要為制定的revision建立分支,可以進行選擇;

  4、點擊OK分支建立完成。

  打開branches目錄,發現目錄依然為空,沒有剛才建立的分支,這是因為分支建立的操作是在服務器端完成的,當需要編輯分支時,在branches目錄點擊Update,剛才建立的分支就會下載下來。

  建立分支的過程會非常的快,不會因為主幹中的文件多而降低速度,原因後續說明。

  使用TortoiseSVN合並分支

  第二篇中舉過例子,有可能存在主幹、分支並行開發的情況,下面我們模擬一下。

  將剛才新建的分支Update下來,打開分支中的A.java,對其進行編輯如下:

技術分享圖片

  在打開trunks主幹中的A.java,對其進行編輯如下:

技術分享圖片

  對以上兩個文件的改動基本上模擬了分支、主幹並行的情況,兩個目錄下的同一個文件被分別修改。

  將以上兩個文件的改動Commit,下面進行合並操作。

  下面開始合並分支到主幹:

  1、在trunks上點擊右鍵,在TortoiseSVN菜單中選擇Merge;

  2、在彈出的窗口中選擇第二項,可以理解為合並兩個樹;

技術分享圖片

  3、在From和To中都選擇要合並的分支目錄;

  4、在From的Revision選擇創建分支時的那個Revision,具體就是點擊Show log,選擇最下面那一條;

  5、在To的Revision選擇HEAD Revision,也就是最新操作;

技術分享圖片

  6、點擊Next,下一個頁面使用默認項,點擊Merge;

技術分享圖片

  7、合並完成。

  這時候會發現trunks目錄下的文件已被修改,這時候的合並操作是在本地完成的,並沒有提交到SVN,這與分支建立時有區別,請註意。

  也就是說如果你在本次合並中發現問題,只需要對trunks目錄Revert,放棄本次合並即可。

  可以看一下trunks目錄合並後的A.java文件,大家與前面對照下,已達到我們想要的合並效果:

技術分享圖片

  

  創建分支時發生了什麽

  SVN服務器在創建分支時的拷貝是非常有效率的,瞬間就可以完成,並且只需要很少的空間來存儲,所以不需要擔心分支建立過多導致項目倉庫膨脹的問題。

  可以理解為SVN在服務器中存儲的是文件的引用,而非物理上的拷貝。

  不要多次合並同一個分支到主幹

  合並分支有一個原則,就是不要對一個分支多次合並到主幹,雖然你有可能在合並後又對分支進行了修改,之所以這樣說是有原因的。

  上面提到在合並分支時,在From的Revision選項中需要選擇合並的真實版本,如果是第一次合並只需要選擇最早的那個版本即可,但如果合並過一次,你真的能記得你上次合並時最後的Revision是多少嗎?

  良好的操作是合並後新建分支。

  合並主幹到分支

  其實合並是個可逆的過程,合並主幹到分支與合並分支到主幹正好是相反的操作,可以參考《SVN使用教程總結》。

  SVN的Export會導出不帶版本控制的文件,同時也會失去跟原分支的父子關系,這種情況下,合並兩個沒用父子關系的分支需要非常慎重。。。

  記錄,為更好的自己!

使用TortoiseSVN新建及合並分支圖文教程