SVN trunk branches tags

Trunk: 主工作目錄,正在開發中的代碼
Branch: 可以認爲是trunk的一個分支,
        1.Trunk的重要版本發佈後 創建一個分支上後可修復Bug,
        2. 在不影響Trunk的前提下,做大幅更改代碼,可以創建Branch,有可能與Trunk合併;
Tags: 類似工作中的一個快照,保存特定版本,可以是Trunk,Branch的一個特定點上的快照.

在SVN中Branch/tag在一個功能選項中,在使用中也往往產生混淆。

在實現上,branch和tag,對於svn都是使用copy實現的,所以他們在默認的權限上和一般的目錄沒有區別。至於何時用tag,何時用branch,完全由人主觀的根據規範和需要來選擇,而不是強制的(比如cvs)。

一般情況下,
tag,是用來做一個milestone的,不管是不是release,都是一個可用的版本。這裏,應該是隻讀的。更多的是一個顯示用的,給人一個可讀(readable)的標記。
branch,是用來做並行開發的,這裏的並行是指和trunk進行比較。

比如,3.0開發完成,這個時候要做一個tag,tag_release_3_0,然後基於這個tag做release,比如安裝程序等。trunk進入3.1的開發,但是3.0發現了bug,那麼就需要基於tag_release_3_0做一個branch,branch_bugfix_3_0,基於這個branch進行bugfix,等到bugfix結束,做一個tag,tag_release_3_0_1,然後,根據需要決定branch_bugfix_3_0是否併入trunk。

對於svn還要注意的一點,就是它是全局版本號,其實這個就是一個tag的標記,所以我們經常可以看到,什麼什麼release,基於xxx項目的2xxxx版本。就是這個意思了。但是,它還明確的給出一個tag的概念,就是因爲這個更加的可讀,畢竟記住tag_release_1_0要比記住一個很大的版本號容易的多。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章