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