SVN - 主幹/分支

時,在開發中,共通的部分修改後,其它人要保持同步。html

這種狀況反應到SVN的分支/合併功能上,再貼切不過了。svn

SVN能夠爲一個版本庫中的內容(主幹)創建一個分支.分支和主幹徹底獨立,就至關於把代碼再複製一份,從新添加到版本庫中。但SVN提供另外一個功能,就是把主幹作出的修改合併到分支中,以及把分支修改的內容合併到主幹中。固然,咱們也能夠把主幹的版本庫的路徑切換到分支上,而後更新,來實現把分支的修改更新到主幹;以及修改分支路徑來同步主幹的修改。但過程複雜,還容易出錯。單元測試

SVN 的分支功能還提供一些合併的測試,能夠在不改動版本路徑的狀況下完成上面的需求。測試

 

示例:ui

 

1.將一個整項目建一個分支.url

 

SVN <wbr>- <wbr>主幹/分支

 

SVN <wbr>- <wbr>主幹/分支

 

創建時要注意:3d

 

1.當前複製源,即專業術語中的 "主幹(truck)"日誌

2.分支存放的位置. 固然,分支也是在SVN版本庫中.htm

3.寫上日誌.這個你們應該懂的.blog

4.是否把主幹的路徑切換到分支.若是勾選了,創建分支後,在主幹裏作出的修改並提交後,更新會提交到分支上。主幹的版本源內容不會變.

 

這時咱們看一下 trunk 目錄的屬性,能夠看到它的路徑已經變成: /calc/branches/my-calc-branch 了。


SVN <wbr>- <wbr>主幹/分支

 

爲了不產生困惑。以及失誤。在創建的時候不要勾上 "切換到分支" 的選項。若是勾上了,咱們仍是切換回去:

SVN <wbr>- <wbr>主幹/分支

SVN <wbr>- <wbr>主幹/分支

 

注意:

 

1.主幹的目錄

2.版本庫源路徑

 

這時你即可以在 /calc/branches/my-calc-branch 分支上開發新的功能,且不會影響到其餘成員開發或維護主幹的內容。

 

2.合併主幹的變動

也許過了一段時間,本來的 /calc/trunk 主幹可能已經有其餘成員陸續修正了一些 Bugs,但這時你的分支 /calc/branches/my-calc-branch 就能夠直接套用主幹 ( /calc/trunk ) 的更新,除了避免重複的工做外 ,也能夠避免版本的衝突,由於多人改一樣的文件可能發生衝突。

 

常常將 開發主幹 ( /calc/trunk ) 的變動透過 svn merge 合併至 分支 ( /calc/branches/my-calc-branch ) 是一個很是好的習慣,這樣纔不會讓你脫離主幹(trunk) 太久而致使將分支 ( /calc/branches/my-calc-branch ) 合併回 主幹 ( /calc/trunk ) 時發生許多衝突。


SVN <wbr>- <wbr>主幹/分支

SVN <wbr>- <wbr>主幹/分支

 

從主幹 ( /calc/trunk ) 合併至分支 ( /calc/branches/my-calc-branch ) 一般選第 1 個,也就是 [Merge a range of revisions]

 

注意.咱們是在分支上使用的 Merge 功能.由於是要在分支上應用主幹的更新.


SVN <wbr>- <wbr>主幹/分支

 

在 Merge 的窗口有如下注意事項:

 

1.合併的來源,因爲咱們打算從主幹 ( /calc/trunk ) 合併至分支 ( /calc/branches/my-calc-branch ),因此合併的來源要選 /calc/trunk 纔對!

2.合併的結果會直接與目前「工做目錄」(Working Copy) 作比對,並修改目前工做目錄中的全部文件。所以建議在作合併以前能夠將全部還沒有 commit 的檔案先 commit 到版本庫,避免沒必要要的衝突事件發生。


SVN <wbr>- <wbr>主幹/分支

 

在正式進行合併(Merge)以前,建議先執行 Test merge 看看是否會發生什麼事!

 

若無異狀則可直接按下 [Merge] 按鈕進行合併動做,這時從 主幹 ( /calc/trunk ) 分支出來的到目前工做目錄的版本就會作個比較,而後直接套用變動到你現有的文件、目錄或屬性裏。

SVN <wbr>- <wbr>主幹/分支

 

 

在合併以後若是沒有發生衝突,不表明真的沒衝突,因此必須再次對原始碼作出驗證後才能 commit 進版本庫,建議可參考如下流程:

 

1.將項目進行建置(Build)

2.若是沒問題再對項目進行單元測試(Unit Testing)或手動測試(Manual Testing)

3.若是都沒問題再 commit 目前合併沒有誤的版本到版本庫!

 

SVN <wbr>- <wbr>主幹/分支

 

3.合併分支到主幹

最後咱們的 my-calc-branch 分支已經將新功能開發完成且測試無誤,因此要將 分支 ( /calc/branches/my-calc-branch ) 的最終版本合併回 主幹 ( /calc/trunk ),這時的手續以下:

SVN <wbr>- <wbr>主幹/分支

SVN <wbr>- <wbr>主幹/分支

 

從 分支 ( /calc/branches/my-calc-branch ) 合併回 主幹 ( /calc/trunk ) 一般選第 2 個,而特別選擇 [Reintegrate a branch] 這個選項是很重要的,由於這有如下好處:

 

1.讓 Subversion 能知道 主幹 ( /calc/trunk ) 是從哪一個分支、哪些版本合併進來的

2.有效節省 Subversion Repository (SVN儲存庫) 的空間,由於不用重複儲存分支的全部變動信息

3.能夠產生 Revision graph 得知項目開發的分支情況


SVN <wbr>- <wbr>主幹/分支

 

同樣能夠先 測試合併(Test merge) 再正式進行 合併(Merge)

SVN <wbr>- <wbr>主幹/分支

 

合併完後再將變動 commit 到版本庫

SVN <wbr>- <wbr>主幹/分支

 

4.刪除使用完畢的分支

當 分支 ( /calc/branches/my-calc-branch ) 合併回 主幹 ( /calc/trunk ) 並 commit 了以後,該分支就沒用了,該分支若是將來再也不更新或繼續開發,Subversion 也不會繼續追蹤這個分支的變動 (由於以前已經 Reintegrate 過了),建議將該分支刪除。

SVN <wbr>- <wbr>主幹/分支

SVN <wbr>- <wbr>主幹/分支

SVN <wbr>- <wbr>主幹/分支

相關文章
相關標籤/搜索