2010-04-10 78 views
0

我有一個產品分發給我的客戶。每個客戶端都需要一些UI自定義。我希望每個客戶都能夠輕鬆獲得新版本的更新。svn分支機構的使用場景

我可以在svn中創建一個用作「基礎項目」的項目,然後爲每個客戶端創建分支嗎?有了這個說法,我能否將分支中的更改提交給分支,並將更改推送到核心?我是否也可以在只更新核心更改的分支中執行和「更新」命令?

回答

2

是的,你可以做所有你提到的svn!

您可以將分支「合併」到核心,指定要合併到主幹(核心)的開始和結束脩訂號。

分支作爲與你的trunk(核心)分開的東西,所以當你提交一個分支時,這些改變只會駐留在分支中,除非你明確地將它合併到trunk。

0

到目前爲止,我所看到的命名是有3個基目錄:

  • 主幹:你的核心
  • 分支:所有的工作分支機構
  • 標籤(或釋放):所有不同版本的發佈。基本上,你給客戶的所有東西都應該放在那裏。

此用法不會超載服務器:相同的文件保留一次,而不是每個分支一個。當你更新時,這對你是一個透明的用戶。

當您需要對主幹進行一些更改時,請先將主幹合併到您的分支(以確保您擁有最新的主幹),然後將分支合併到主幹上。 (確保你沒有在過程中無意中抹去任何東西)。

3

Mahesh有正確的答案,您可以爲每個分支創建一個分支,並在您想要發佈的時候從您的主幹合併變更。

我會拋出一些建議,但:避免這樣做!

不可避免地,,因爲你可以自定義完整的代碼,你會。即使「UI更改」也會導致問題 - 如果修改了trunk和客戶端自定義分支中的同一段代碼,則會導致必須在合併時手動解決的衝突。隨着你的進一步發展,變化將變得越來越複雜,你的分支機構將更加脫離後備箱,越來越像是一種完全不同於定製的產品。

考慮這種情況:您需要引入一個新功能,或者想要重構現有的功能來修復一些錯誤或使其更容易維護。但是,這種更改會破壞現有代碼(例如其他功能)。當你有一個單一的代碼庫時,至少你可以看到它會破壞的地方,以及你需要做些什麼來修復它。當您有多個全部定製的分支時,該可視化是不可能的。


一個更好的選擇是看你需要的所有這些客戶到底該怎麼做,並建立了一個框架,讓這些定製,同時仍保持一個代碼庫。

如果您只想更改標題欄中的名稱和幾張圖片,只需創建一個允許指定這些內容的配置文件(.ini或XML等)即可。您的應用程序在啓動時讀取它。現在您擁有一個代碼庫,您只需在部署過程中爲任何客戶端交換定製文件。

如果您需要自定義GUI的佈局(通常稱爲「蒙皮」),則有預構建的框架可以幫助實現這一點。

在頻譜的最遠端,如果您確實需要提供代碼自定義,請使用插件體系結構進行。構建提供基本API的接口,然後爲每個客戶端構建一個實現該接口的自定義庫,但每個客戶端都有自定義部分。您可以將控件,代碼邏輯等放入庫中。

細節超出了這個問題的範圍,但是你可以做任何事情,而不必涉及(大多數)相同代碼的多個副本將會引入的問題。

+0

感謝您的寶貴意見。我幾乎肯定我唯一會改變的是一些.aspx和.ascx文件,當然還有css和圖片,所以我相信這種場景可能適合我的需求。 – 2010-04-10 23:45:05