2011-10-31 91 views
2

我們希望開發產品並將其交付給多個客戶。現在我們有這樣的情況,一些客戶希望有一個額外的功能x和另一個客戶想要功能y。 某些功能還需要對產品的軟件體系結構進行一些更改。不同版本產品的項目結構

當然,所有客戶都希望受益於所有客戶定義的官方功能。

現在我的問題是如何處理最好的?目前我們正在使用SVN進行版本控制,只要您有一根主幹和創建標籤的可能性,它就可以很好地工作。

我知道我們可以爲每個客戶創建幾個中繼線,然後將所有功能合併到幾個客戶中繼線中,但這是很多手動工作,可能會非常迅速地變得混亂。

感謝您的幫助

回答

3

這是一個大的,多毛的主題 - 馬丁福勒分支功能的一個偉大的寫了(http://martinfowler.com/bliki/FeatureBranch.html);還有分支抽象(http://continuousdelivery.com/2011/05/make-large-scale-changes-incrementally-with-branch-by-abstraction/)。

最大的風險是你最終將SVN用作「適當」體系結構的替身。如果您需要以這種方式支持多種功能,您應該設計解決方案以在運行時(通過配置)或構建時(通過配置)支持此功能;通常的做法是使用插件。

使用你的源代碼控制系統來「合併」功能使合併過程變成一個不可預知的,不穩定的混亂 - 你可以從另一個分支代碼合併的事實並不意味着它將會有意義 - 而且開發不同特性/分支的開發人員可能會複製彼此的工作,或者在設計上做出互斥的決定。