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