Maintaining product isolation within multiple repositories with Mercurial
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.
精彩评论