使用TortoiseSVN進行分支管理

SVN中的Branch/tag在一個功能選項中,在使用中很容易產生混淆。 web

分支(Branch)管理和標記(Tag)管理,版本管理系統有兩個基本的功能。svn

分支用於在並行開發,這裏的並行是指和trunk(主分支)的並行。blog

而tag是用來作一個里程碑(milestone),無論是否是release,都是一個可用的版本。ci

那麼何時用到tag管理?何時用到Branch管理?開發

我舉兩個場景:產品

場景一,有客戶想對產品作定製,可是咱們並不想修改原有的svn中trunk的代碼。it

場景二,咱們正在開發產品下階段的任務,但上階段的工做發現問題io

以場景二爲例,項目某一階段開發完成後,這個時候要作一個tag,tag_mfcai_V1.01.00,效率

而後基於這個tag發佈一個新的版本,假設項目是web項目,那麼基於這個tag發佈一個war包。版本管理

而後trunk進入下階段繼續開發,可是很不幸發佈的版本被檢測出來了bug,有人會提議,把bug放到下階段的任務中去。假設下階段的任務纔剛開始,用戶可等不起.他們會認爲一個小的bug解決要這麼長時間,效率過低了.

那麼就須要基於tag_mfcai_V1.01.00作一個branch,branch_bugfix_V1.01.00,基於這個branch進行bugfix,

等到bugfix結束,作一個tag,tag名稱假設爲:tag_mfcai_V1.01.01,基於這個tag再發佈一個版本。

這樣,又沒有影響trunk(主分支)的開發。而後,根據須要決定branch_bugfix_V1.01.00是否併入trunk。

再介紹點打tag的知識。確認項目組成員的代碼都commit後。

1)右擊要打tag的目錄--->TortoiseSVN--->branch/tag

2)再彈出來的對話框中,要求輸入分支或標記的目標路徑

3)建立分支或標記的時候,你有三個選項版本庫中的最新版本,版本庫中的指定版本,工做副本。

  • 最新版本(HEAD revision in the repository)——直接從版本庫中最新建立,因爲不須要從你的工做拷貝中傳輸數據,建立過程會很快。
  • 版本庫中的指定版本(Specific revision in the repository)——一樣是從版本庫中建立,不一樣的是你能夠指定一個版本號。若是你忘了版本號,能夠經過顯示版本記錄來找到你想要的版本號(以下圖)。這種方式一樣不須要從你的工做拷貝中傳輸數據,建立過程也很快。
  • 工做副本——這種方式會依據當前工做拷貝的版本情況(不管是你作了本地的修改,或是將其中的某些文件更新到了一個歷史版本)來建立分支拷貝。這種建立方式會根據工做副本中每一個文件的版本狀況來決定是否要從工做拷貝向版本庫中傳輸數據。

4)最後一個選項就是「切換工做副本至分支/標記」選項,若是選中這個選項,顧名思義你用來建立分支或標記的工做拷貝就會自動切換到指定建立的版本或標記的。固然你能夠經過Switch(從新定位)和Checkout(檢出)功能來完成切換的工做。

本文歡迎轉載,轉載請註明出處與做者

出處:http://blog.sina.com.cn/staratsky

做者:流星

相關文章
相關標籤/搜索