使用mercurial与两个长时间运行的分支略有不同的好工作流程(即我从不打算将它们完全合并回来) 一起)?
在我的情况下,这是CMS软件,它已针对两个人进行了不同的定制
不同的网站。我从projectA
开始,一旦将其克隆到projectB
并对A和B进行进一步调整以进行自定义。现在我想开发一些在A和B中都显示的功能,而不需要合并特定于站点的自定义。怎么样?
hg push
将推送所有内容,因此无效
移植似乎给了我不同的变化集合哈希,这让我担心
我觉得可能存储库应该以不同的方式设置,但我不是 确定如何。
答案 0 :(得分:3)
作为Thilo条评论,常用部分最佳开发(并在A
和B
中发布)作为第三个回复声明为 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(但永远不会回到公共分支)。
这种替代方案更容易发生事故(以错误的方式合并),但您可能会发现设置和快速工作更容易。