我的问题类似于: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
答案 0 :(得分:3)
根据你的问题和澄清评论,你想要的是不可能的,而不是hg应该做什么。
我要说的一切,我说的是一个犯了你将要制造的那种错误的人,以及一直为此而后悔的人(并且慢慢地,痛苦地,试图撤消它)。
正如我在评论中所说,这似乎是一个错误的设计。如果您希望某些内容只是出于某些目的而成为代码库的一部分,那么这是一个很好的指标,表明您真正需要的是以下之一:
您可能不希望在主项目的源代码树中使用特定于客户的功能---并且绝对不需要客户特定的数据。无论何时您要提交包含客户配置或只有一个客户将使用的代码的更改,您需要退一步并询问(1)为什么它应该在您的核心项目中而不是一个插件和(2)如果另一个客户或第三方错误地访问它会产生什么影响。
答案 1 :(得分:0)
我至少看到两种可能的方式:
hg graft
,仅挑选所需的更改集在最后一种情况下,可能根本不需要单独的命名分支 (你有default
并且为每个客户应用了不同的补丁) - 至少我转移到这个工作流程,当我必须维护一组只有略微不同配置的克隆,并且从默认值到每个分支的合并变得无聊