多分支開發,Merge是一個繞不過的話題,不管是Git還是SVN,公司用的是SVN,之前對於SVN的Merge沒有很好的研究,出了些狀況,這個問題不解決,順暢地進行多分支開發就是海市蜃樓,下定決心把這塊給完全搞透,在百度上找到的都是太古老的資料,SVN的幫助又沒有寫得太清楚,沒有例子,最終在StackFlow上找到了線索,通過自己的試驗找到了一條我認為是正確額做法。簡單總結如下:
1、主干是一切的基石
2、任何分支的來源都必須是主干
3、如果主干修改不多,以分支修改為主的,且需要把主分支的變更及時同步到子分支的,就一定要及時Merge,也就是主分支有變更之后立即Merge到子分支
4、每次從主干建立一個新分支之前,一定要把還在開發的分支都Merge到主干
5、如果從主分支建立子分支之后,主分支的改動由於某種原因不宜立即Merge到子分支的(比如:子分支是處於集成測試階段即將發版的,在主分支上修復了某些不在這次發版范圍內的小Bug),在子分支告一段落后,一定要及時Merge到主分支
6、對子分支的管理,要注意以下原則:
1)沒有必要不要建立子分支:子分支越多,越難管理
2)開發結束之后確定不需要再維護的子分支,建議及時刪除
7、一般情況下不建議使用“Merge to different trees”來做Merge,第3、4種情況,都請用“Merge a range of revisions”,(TortoiseSVN1.8版以上),具體如下:
要從主分支Merge到子分支的時候,在子分支的WorkCopy上點擊右鍵選“Merge”,具體設置如下:
要從子分支Merge到主分支的時候,在主分支的WorkCopy上點擊右鍵選“Merge”,具體設置如下: