2011-04-05 79 views
2

我們已經爲多個客戶部署了這款webapp產品,並考慮從svn切換到mercurial。在svn中,我們將主幹看作是我們項目的核心,而分行則爲每個客戶設置。Mercurial:多客戶項目的資源庫佈局

現在我不知道什麼是最好的回購佈局可能是在mercurial。

可以說這個項目基本上是由三個主文件夾組成的:html,css,js

雖然/html內容保持不變跨越的客戶,我們在/css & /js定製。
現在,這些定製生活在單獨的文件中,如skin.css,所以我們可以清楚地說明從核心/通用文件修復/更改的真實目標定製。

然後SVN讓我們將客戶分支的變化部分地提交給主幹,這樣我們就可以在處理客戶項目時修復全局問題。據我所知,現在不支持部分提交。

那麼,我們如何最好地接近這種情況在mercurial? 我們是否應該有一箇中央核心回購(可能與發佈分支機構)並將客戶項目克隆爲獨立(遠程)回購? 是否有更好的全核心&客戶分支 - 在一個回購裏面?

非常感謝任何指針!

回答

4

我會將項目拆分爲兩個倉庫:core(html)和customer(css,js)。 「核心」很容易理解。對於「客戶」,我會從一個通用樣式或後備樣式集開始。然後爲每個客戶創建一個克隆,避免使用通用樣式。爲了構建一個客戶,您需要從核心客戶和客戶克隆中提取內容。通過這種方式,不同的客戶是孤立的,但仍然通過通用風格彼此瞭解。因此,如果您想要改變所有客戶的風格,您只需承諾使用通用樣式,並讓每位客戶都能克隆。我不會讓不同的客戶完全不同的回購。

有一個單一的回購問題是每當你爲一個客戶創建一個克隆,你帶着一個不相關的部分(html)。而意想不到的修改可以很容易地泄露到HTML。出於同樣的原因,即使在SVN中,您的項目可能也應該分成兩個項目。

+0

通過說從核心和客戶拉,你的意思是讓他們設置爲每個客戶回購的子庫嗎? – Carsten 2011-04-11 10:17:45

+0

@Carsten,無論何時爲客戶A構建內容,您都需要兩個部分 - 核心(html)和A的風格。然而,如何設置它們取決於您。我不完全清楚「per-customer-repos」子目錄「 – 2011-04-11 12:52:47

+0

」的意思,對不起,我有點不清楚。 例如,如果我找到你的答案,'顧客A'也可能是回購'顧客'的一個分支。 現在,你會如何看待覈心回購?您會在客戶回購中購買Mecurial subrepo嗎?檢查'核心'嗎? 或者你只是將核心文件放入客戶的工作副本中? – Carsten 2011-04-11 15:01:40