目的
并行開發(fā),互不干擾
概念
主干(trunk):用于主方向的開發(fā),增加新功能,存放穩(wěn)定的代碼
分支(branch):通常用于修復(fù)bug,可以和主干并行開發(fā)
標記(tag):用于標記某個可用的版本(可以是已經(jīng)上線發(fā)布的也可以是正在測試的),通常為只讀
流程
建立項目
新建\trunk\MyProject,開發(fā)功能,測試上線
標記版本
新建/tags/1.0/MyProject,繼續(xù)在\trunk\MyProject開發(fā)新功能
用戶或測試反饋有bug,需要修復(fù)
新建/branches/MyProject,修復(fù)bug
bug修復(fù)完并測試上線
新建/tags/1.0.1/MyProject
將branches/MyAppProject打一個新的tag便于下次在此基礎(chǔ)上再次修復(fù)bug
將branch merge進trunk,/branches/MyProject的源碼如果不想要可以刪掉

分支合并的時機
不同分支的最大區(qū)別是功能上線的時間點。根據(jù)上線周期劃分功能,拆分到不同分支。因為開發(fā)需求多,迭代頻繁,所以靠后的分支對比之前的分支通常只是多了某些新功能。這樣,分支的出現(xiàn),避免了未開發(fā)完成的功能影響了已開發(fā)完的功能,導(dǎo)致當前版本的不穩(wěn)定。所以,合并分支的時機就是這個分支的功能要不要上線。這樣,主干永遠是穩(wěn)定的,也只有經(jīng)過測試的內(nèi)容,才會合入主干。同時,多個版本可以并行
branch和trunk并行開發(fā)的過程中,要經(jīng)常同步
將trunk的修改合并到branch時,merge type選擇"Merge a range of revision"
將branch最后合并回trunk時,merge type選擇"Reintegrate a branch"
(tortoiseSVN)