2011-04-05 76 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