我致力于为多个客户维护相同的电子商务网络应用程序。
最初有一组标准页面,过去所有其他客户定制都是从这些页面中派生出来的。
最近我工作的地方决定使用Mercurial进行版本控制。他们还决定为我们的电子商务重新设计标准页面,并使它们成为主线/基线开发。
据说,我们的每个客户都有现有的自定义设置,这些设置是在基线网页集之前制作的,尚未输入版本控制(hg)。
在为每位客户保留现有自定义项的同时,将每个开发基线的变更合并到单独的开发线中的最佳方法是什么?
答案 0 :(得分:1)
在为每位客户保留现有自定义项的同时,将每个开发基线的变更合并到单独的开发线中的最佳方法是什么?
就像在任何其他分支方案中一样。即G:
alice ~/wc/cust-XYZ % hg pull -u $xyz
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg pull $mainline
alice ~/wc/cust-XYZ % hg merge
alice ~/wc/cust-XYZ % hg ci
alice ~/wc/cust-XYZ % hg push $xyz
答案 1 :(得分:0)
根据每个项目需要的自定义方式,最简单的方法可能是为每个客户提供一个独立的模板树,该树模板优先于基本集。如在
base/template1.html
customer/template1.html
对于任何页面,首先搜索客户的目录。你不应该需要很多版本控制魔法,但子库可能很方便。
您可以使用mq
(Mercurial队列)将每个客户的更改作为补丁集跟踪。合并补丁集可能有点棘手。
您可以使用rebase
执行相同的操作,可能比mq
更优雅,但我不确定如何共享rebase集。
或者您可以简单地保留一个基本存储库,并从每个客户中分离出永远不会被拉回基地的存储库。
在每种情况下,如果您组织项目,您的生活(合并)会更容易,因此每个客户的自定义设置受到限制,因此它们不太可能与核心产品的更改发生冲突。
答案 2 :(得分:0)
我会 - 并且 - 拥有一个公共存储库并为新客户克隆它。如果您有一个应该进入公共存储库的补丁 - 或者需要从公共存储库应用到客户的存储库的一组补丁 - 您可以使用hg移植。