Posted on 2010-09-03 11:15
S.l.e!ep.¢% 閱讀(833)
評論(0) 編輯 收藏 引用 所屬分類:
Team
一直沒明白trunk branches tags的意思,今天問了一下google,來理解一下。
trunk:主線,開發過程中的工作目錄
branches:支線,臨時分支,定制化需求
branches/order008
branches/order009
tags:發布目錄,不做修改
tags/release-1.0
tags/release-1.1
場景一:
產品開發已經基本完成,并且通過很嚴格的測試,這時候我們就想發布我們的1.0版本,不再提交代碼
1. svn copy svn://server/trunk svn://server/tags/release-1.0 -m "1.0 released"
場景二:
有一個客戶想對產品做定制,我們可以從已發布庫中選擇一個版本,做為起點來開發
1. svn copy svn://server/tags/release-1.0 svn://server/branches/order009 -m "定單009"?
場景三:
有一天,突然在trunk下的core中發現一個致命的bug,那么所有的branches一定也一樣,這時需要進行分支合并
1. svn -r 148:149 merge svn://server/trunk branches/order008
2. svn -r 148:149 merge svn://server/trunk branches/order009
其中148和149是兩次修改的版本號。
由于我們是給自己公司的網站源碼做配置管理,沒有明確的trunk branches tags區分。我們以SCRUM的形式做開發,一般保持兩個版本線,一條主線A,一條支線B。A與運行版本保持一致,B做為Sprint開發的工作目錄。A,B都可以提交代碼,視情況在A,B之間進行部分合并。Sprint開發完成后,進行總合并,并選擇其中一條繼續做主線,移除另一條。下一期Sprint開始的時候,繼續A,B兩條線的開發。
這樣做的目的,也是為了適應自己的配置需求,在進行B線開發時,經常會有A線的改動。A線的代碼保持最新,可更新到運行環境的能力。混亂經常發生在合并A,B的時候,不過長痛不如短痛,用一時的混亂,換取長期的穩定。