SVN分支研究


在結合之前總結的定制開發的產品版本開發問題解決的方法:http://www.cnblogs.com/EasonJim/p/5971906.html,今天來研究以下用SVN處理這類的問題。

研究SVN分支合並的問題,只要用到trunk(主干)/branches(分支)/tags(標簽),參考:http://www.cnblogs.com/EasonJim/p/6103807.html

場景:

1、假設公司有一套電商產品,每個季度會發布一個版本,功能和底層上都是往上遞增的。

2、那么問題來了,我們每個季度在發布每個新版本的同時,我們的銷售也會不斷的推廣,可能在其中的一個版本就已經賣出去了。

3、由於客戶更新版本的速度會沒有那么快,畢竟是關乎錢的問題,可能會間隔幾個版本之后才會選擇更新一個版本,出這個版本錢去購買。

4、在第一次購買的電商產品的時候,里面就有屬於自己的定制業務需求開發的功能,那么在購買最新的版本時候,必須包含最新的功能的同時也要包含自己以前定制開發的需求。

5、當在某個客戶上開發的特定需求時,發覺這個特定需求也是屬於我們產品需要的時候,那么會合並到我們的電商產品中,在下一個版本的發布上會帶上這個功能。

基於以上場景,那么對於我們進行開發的時候,基於SVN的分支是最合適的。

分為以下版本:

主干(truns)版本A(不斷的開發新功能,合並分支提交的bug)

分支(branches)版本A_1(其中發布的第A_1個用於銷售的版本,並不斷的在這個版本上進行開發修復bug,提交到主干,最后會發布第A_1、A_1.1、A_1.2...個版本到下面標簽(tags)上)

標簽(tags)版本A_1(其中發布的第A_1個用於銷售的版本)

分支版本A_1_1(從tags或者branches上分支出來的A_1版本,客戶1購買第A_1個版本,包含了自己的定制需求1)

分支版本A_1_2(從tags或者branches上分支出來的A_1版本,客戶2購買第A_1個版本,包含了自己的定制需求2)

測試:

1、主干(truns)上的項目可以合並下面任何一個子分支的修改,包括子分支的子分支的修改。

1.1、子分支可以合並下面任何一個子分支的子分支的修改。

2、子分支的子分支的子分支可以合並子分支的修改。

3、子分支可以合並子分支的子分支的子分支的修改。

4、子分支(包括子分支的子分支...)可以合並主干(truns)的修改

所以,在SVN上分支出來的任何版本都可以來回合並。

總結:

那么應對上面的場景,我們對SVN可以這樣控制:

1、大致版本控制和正常產品流程,參考:http://www.cnblogs.com/EasonJim/p/6103807.html

2、當客戶定制的功能符合產品的功能需要時,那么會提到最新的主干(truns)上,不會是合並到分支(branches)。

2.1、也可以這樣處理,先從分支(branches)中分支出一個版本,然后這個功能合並到分支出來的版本中,再發布到標簽(tags)中,那么以后就是維護這個版本了。

2.1.1、對於上面這種做法的場景就是,當主干已經從大版本1升級到了大版本2,那么只有分支(branches)是維護大版本1的,采用上面這樣的方式就是最合適的。

3、當客戶從版本1升級到版本3時,那么這個客戶先合並版本3的分支(branches)的文件,最終形成客戶定制的版本3。

3.1、另一種是直接簽出版本3的分支(branches)的文件,然后再合並客戶定制的版本1的定制功能,最終形成客戶定制的版本3。

4、分支(branches)上的版本有修改的bug時,可以一同發布到標簽(tags)上。

4.1、分支(branches)永遠都只是修改bug,不允許新功能的開發。新功能全部交由主干(truns)進行。且修復的bug需要及時提交到主干。除非這個bug在主干(truns)上的功能已經砍掉了,那就不用提交。

5、分支(branches)修復了一個bug的同時,發布到標簽(tags)的同時,可以在針對相應的版本發布到分支(branches)上,也可不用,因為銷售出去的產品用於都是最新的版本的(不可能直接銷售時拿這個版本以前有bug的進行銷售吧,所以肯定是最新沒bug的版本才對)。

6、其實還有一個特別的需求,比如,分支(branches)上的某個V1版本需要增加功能(短信驗證),而這個功能是在主干的最新V2版本上有加入,但是迫於用戶只願意給這個短信的錢,不願意給V2升級版的錢。且這個短信驗證的功能在V1這個版本也確實需要的時候。

6.1、第一種解決,針對這個用戶定制開發。不考慮合並到分支(branches)上。

6.2、第二中解決,打破上面第4點,然后在分支(branches)V1版本直接合並主干(truns)的短信驗證功能進來,再發布一個增加短信功能的V1版本到標簽(tags)上。注意,這里版本號上的功能增加+1。

6.3、第三中解決,打破上面第4點,然后在分支(branches)V1版本上開發短信驗證的功能,然后客戶定制的V1版本上合並分支(branches)V1版本的短信功能。

總結2:

有了SVN的代碼控制,那么再針對版本號進行命名進行規范:http://www.cnblogs.com/EasonJim/p/6105893.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM