Mercurial:多客户项目的存储库布局

时间:2011-04-05 15:28:40

标签: mercurial branching-and-merging repository-design

我们已经为多个客户部署了这个webapp产品,并考虑从svn切换到mercurial。在svn中,我们将主干视为我们项目的核心,而为每个客户设置分支。

现在我想知道mercurial中最好的repo布局是什么。

让我们说项目基本上由三个主要文件夹组成:htmlcssjs

虽然/html的内容在客户中保持不变,但我们在/css& /js
现在,这些自定义项存在于单独的文件中,例如skin.css,因此我们可以清楚地告知从核心/公共文件的修复/更改中进行的实际定制。

SVN然后让我们部分地将更改从客户分支机构提交回主干,因此我们可以在处理客户项目时修复全局内容。据我所知,目前mercurial不支持部分提交。

那么,我们如何在mercurial中最好地处理这种情况? 我们应该有一个中央核心仓库(可能有发布分支)并将客户项目克隆为独立(远程)回购吗? 拥有全部 - 核心&更好吗?客户分支 - 在一个回购中?

非常感谢任何指针!

1 个答案:

答案 0 :(得分:4)

我会将项目拆分为两个回购:核心(html)和客户(css,js)。 “核心”很容易理解。对于“客户”,我将从一组通用或后备的样式开始。然后克隆每个客户的通用样式。要为一个客户构建,您需要从核心和客户克隆中提取。这样,不同的客户被隔离,但仍然通过通用风格相互了解。因此,如果您想要跨所有客户更改任何样式,您只需要提交通用样式并让每个客户克隆。我不会让不同的客户完全不同的回购。

拥有一个单独的回购的问题在于,无论何时为一个客户进行克隆,都会携带一个不相关的部分(html)。而意外的修改很容易泄漏到html中。出于同样的原因,即使在SVN中,您的项目也可能已经拆分为两个项目。