在不同的分支上使用mercurial

时间:2010-10-27 05:56:00

标签: mercurial

使用mercurial与两个长时间运行的分支略有不同的好工作流程(即我从不打算将它们完全合并回来) 一起)?

在我的情况下,这是CMS软件,它已针对两个人进行了不同的定制 不同的网站。我从projectA开始,一旦将其克隆到projectB并对A和B进行进一步调整以进行自定义。现在我想开发一些在A和B中都显示的功能,而不需要合并特定于站点的自定义。怎么样?

hg push将推送所有内容,因此无效 移植似乎给了我不同的变化集合哈希,这让我担心

我觉得可能存储库应该以不同的方式设置,但我不是 确定如何。

4 个答案:

答案 0 :(得分:3)

作为Thilo条评论,常用部分最佳开发(并在AB中发布)作为第三个回复声明为 SubRepo

这样,你尊重前两个独立的回购(A上的一个进化并不总是意味着B上的进化),你可以在subrepo C中开发公共部分。

答案 1 :(得分:0)

Mercurial的解决方案可能是,如果您可以将不同区域放在.hgignore中的文件中,但它们不会被版本化,因此可能不太好。

另一种方法是只使用1个repo,并设置一个全局标志,并根据标志使用模板A或B,和/或根据标志包含不同的代码源文件。如果差异很小,则可以在同一文件中使用if-then-else

答案 2 :(得分:0)

您可以使用hg push将更改重新推送到一起,但您不一定必须所有更改集合并到主干中。拿你想要的那些。

答案 3 :(得分:0)

如上所述,subrepo可能是最好的选择。另一种方法是让第三个分支具有共同的工作,并从该分支合并到projectA和projectB(但永远不会回到公共分支)。

这种替代方案更容易发生事故(以错误的方式合并),但您可能会发现设置和快速工作更容易。