我们已经为多个客户部署了这个webapp产品,并考虑从svn切换到mercurial。在svn中,我们将主干视为我们项目的核心,而为每个客户设置分支。
现在我想知道mercurial中最好的repo布局是什么。
让我们说项目基本上由三个主要文件夹组成:html
,css
,js
。
虽然/html
的内容在客户中保持不变,但我们在/css
& /js
。
现在,这些自定义项存在于单独的文件中,例如skin.css
,因此我们可以清楚地告知从核心/公共文件的修复/更改中进行的实际定制。
SVN然后让我们部分地将更改从客户分支机构提交回主干,因此我们可以在处理客户项目时修复全局内容。据我所知,目前mercurial不支持部分提交。
那么,我们如何在mercurial中最好地处理这种情况? 我们应该有一个中央核心仓库(可能有发布分支)并将客户项目克隆为独立(远程)回购吗? 拥有全部 - 核心&更好吗?客户分支 - 在一个回购中?
非常感谢任何指针!
答案 0 :(得分:4)
我会将项目拆分为两个回购:核心(html)和客户(css,js)。 “核心”很容易理解。对于“客户”,我将从一组通用或后备的样式开始。然后克隆每个客户的通用样式。要为一个客户构建,您需要从核心和客户克隆中提取。这样,不同的客户被隔离,但仍然通过通用风格相互了解。因此,如果您想要跨所有客户更改任何样式,您只需要提交通用样式并让每个客户克隆。我不会让不同的客户完全不同的回购。
拥有一个单独的回购的问题在于,无论何时为一个客户进行克隆,都会携带一个不相关的部分(html)。而意外的修改很容易泄漏到html中。出于同样的原因,即使在SVN中,您的项目也可能已经拆分为两个项目。