假設我正在爲具有共同需求的不同客戶開發軟件。 我使用單一的開發線開發系統,這沒關係。每個客戶端都在服務器上安裝該軟件,並通過從bitbucket存儲庫中提取更新。Mercurial上的多個並行版本
後來,其中一位客戶僅針對自己的需求要求定製模塊。其他客戶也可能有其他自定義需求。
我的問題是:我如何管理定製,拉動(更新)開發主線的新版本,以及只有當他們在場時才報關?
假設我正在爲具有共同需求的不同客戶開發軟件。 我使用單一的開發線開發系統,這沒關係。每個客戶端都在服務器上安裝該軟件,並通過從bitbucket存儲庫中提取更新。Mercurial上的多個並行版本
後來,其中一位客戶僅針對自己的需求要求定製模塊。其他客戶也可能有其他自定義需求。
我的問題是:我如何管理定製,拉動(更新)開發主線的新版本,以及只有當他們在場時才報關?
一個選項:使定製代碼成爲代碼庫的一部分,而不是通過Mercurial進行管理。做這件事有很多很好的理由,包括你沒有分叉的危險,並且永遠維護單獨版本的代碼,或者實際上維護一個版本庫樹的單獨分支。這些都是非常沉悶的任務,可能會導致問題,所以如果我是你的話,我會贊成。這取決於你的語言,但我的目標是在MainCodeBase中保留一些模塊,以便用戶配置使用哪些模塊。
第二選項:子存儲庫。爲Customer1製作回購,其中包含該客戶的模塊並具有MainCodeBase的子存儲庫。 Customer1只需遞歸拉取其存儲庫以獲取最新的模塊和最新的MainCodeBase。這裏的問題是,當你想讓多個客戶使用相同的模塊時,它開始變得很難看。