多个客户分支机构的mercurial repo

时间:2015-05-16 15:44:05

标签: mercurial

我的问题类似于:Mercurial branches with different codebase

但是那里给出的解决方案是在一个客户分支上完成所有工作并将其合并到默认值。我不知道在我的案例中这是如何可行的。

我有一个项目可以分发给4个客户。我为每个客户设置了一个命名分支。什么是将更改合并到公共代码的有效方法,同时只留下一些客户特定的数据和/或要求?

编辑:

我有客户a,b,c。机器M,N。和部分1,2,3,4,5。

现在我有一个subrepos a,b,c,M,N,1,2,3,4,5和repos aM1,aM2,bM1,bN1,....我正在考虑有subrepo客户(分支a,b,c)。机器(分支M,N)。部分(1,2,3,4,5)

是否有使变更传播变得容易的技术,但也保留了一些永久性的差异。也许是这样的: TipsAndTricks

2 个答案:

答案 0 :(得分:3)

根据你的问题和澄清评论,你想要的是不可能的,而不是hg应该做什么。

我要说的一切,我说的是一个犯了你将要制造的那种错误的人,以及一直为此而后悔的人(并且慢慢地,痛苦地,试图撤消它)。

正如我在评论中所说,这似乎是一个错误的设计。如果您希望某些内容只是出于某些目的而成为代码库的一部分,那么这是一个很好的指标,表明您真正需要的是以下之一:

  • 更具可配置性打开或关闭功能,
  • 自定义构建脚本,用于组合项目的各种版本,或
  • 核心代码库以及一些针对插件和插件的客户或特定目的代码库

您可能不希望在主项目的源代码树中使用特定于客户的功能---并且绝对不需要客户特定的数据。无论何时您要提交包含客户配置或只有一个客户将使用的代码的更改,您需要退一步并询问(1)为什么它应该在您的核心项目中而不是一个插件和(2)如果另一个客户或第三方错误地访问它会产生什么影响。

答案 1 :(得分:0)

我至少看到两种可能的方式:

  • 客户特定的更改始终位于不同的更改集中,您可以将常规更改从特定于客户的分支移动到主线而不是并使用合并,但使用hg graft,仅挑选所需的更改集
  • 使用MQ扩展,您可以在MQ补丁(每个客户的补丁)中进行客户特定的更改,根据需要单独应用和不应用,只需合并分支

在最后一种情况下,可能根本不需要单独的命名分支 (你有default并且为每个客户应用了不同的补丁) - 至少我转移到这个工作流程,当我必须维护一组只有略微不同配置的克隆,并且从默认值到每个分支的合并变得无聊