使用Mercurial在多个存储库中维护产品隔离

时间:2011-06-30 15:54:32

标签: php codeigniter mercurial

我们有一个运行CodeIgniter的大型网站,我们目前正在概述更好的Mercurial设置,然后我们现在拥有它。我们现在的想法是,通过以下repo设置,我们将多个产品合并到alpha环境中。一旦获得销售批准,它将进入uat以获得客户批准。

                 [LIVE]
                   |
                 [UAT]
                   |
                [ALPHA]
          /        |        \
[PRODUCT1]     [PRODUCT2]    [PRODUCT3]

我们关注的是如何处理product1product2已合并到alpha并将其转移到uat的情况,但product2需要从uat中移除,因为客户发现了需要解决的问题,但product仍然需要现场直播。这是一个问题,因为根据我们对Mercurial的理解,它并不是为了拆分产品或删除特定的变更集树而构建的。

关于如何以简单的方式实现这一目标的任何想法? Mercurial是正确的解决方案还是我们应该研究其他什么?您是否遇到过这种情况,您做了什么?

更新

我一直在阅读书签。使用它们进行拉/推可以使用书签来跟踪product1 v1.4.21等版本,以控制这些多个存储库中包含哪些版本的产品?

书签似乎不是最佳解决方案,因为它仍然不允许我从product2存储库中的alpha中删除更改集,只留下product1 alpha存储库。

1 个答案:

答案 0 :(得分:0)

我不确定我理解你,但我认为你想要像this这样的东西。 (该帖子中的图片是针对Git的,但它们也应该适用于Mercurial。)简而言之,您将为每个环境维护单独的分支(alpha,UAT,发布,显示停止错误修复,等)。

我有点困惑为什么你把所有三种产品放在一个存储库中。它们是相同的,只是不同的版本?然后使用标记的修订版在分支上标识它们,但它仍然是一个存储库(实际上是一个代码库)。它们是不同的产品吗? (如果是这样,为什么要合并它们?)然后你可以使用单独的存储库来保持清洁。