开发者

Maintaining product isolation within multiple repositories with Mercurial

开发者 https://www.devze.com 2023-03-16 06:58 出处:网络
We have a large site that runs CodeIgniter that we\'re currently in the process of outlining a better Mercurial setup then what we have now.Our thinking right now is that with the following repo setup

We have a large site that runs CodeIgniter that we're currently in the process of outlining a better Mercurial setup then what we have now. Our thinking right now is that with the following repo setup we will merge multiple products into an alpha environment. Once it's approved by sales it'll go into uat for customer approval.

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

Our concern is how to handle the situation where product1 and product2 have both merged in alpha and made it to uat, but product2 needs to be removed from uat because the customer has found issues that need to be resolved, but product still needs to go LIVE. This is a problem because based on our understanding of Mercurial it's not quite built to split off a product or remove a specific tree of changesets.

Any ideas on how this can be accomplished in a simple manner? Is Mercurial the right solution or is there something else we should loo开发者_StackOverflowk into? Have you run into this scenario, what did you do?

Update

I've been reading up on Bookmarks. With them being carried with pulls/pushes it possible to use Bookmarks to track versions such as product1 v1.4.21 to control which versions of products are included within these multiple repositories?

Bookmarks don't seem like the best solution, because it still doesn't allow for me to remove the changesets from product2 within the alpha repository, leaving only product1 within the alpha repository.


I'm not sure I understand you, but I think you want something like this. (The graphics in that post are directed towards Git, but they should work just fine for Mercurial as well.) In short, you'd maintain separate branches for each of the environments (alpha, UAT, released, show-stopping bug fixing, etc).

I'm kind of confused why you have all three products in one repository. Are they the same, just different versions? Then use tagged revisions to identify them on the branches, but it would still be one repository (indeed, one code base). Are they different products? (If so, why are you merging them?) Then you can use separate repositories to keep things clean.

0

精彩评论

暂无评论...
验证码 换一张
取 消