We have three environments:
Prod. We use
TFS to schedule releases of our
master branch into
Dev for our internal verification, then
UAT for business verification, and of course finally to
Prod once approved.
We've recently adopted a new lightweight Git branching strategy as follows:
master is always prod-ready. At any point
master should be able to be deployed to production.
All new development is done in a separate feature (topic) branch as follows:
- Create a new feature branch off
master, call it
FeatureAis finished, release it to
Dev, and then
- Once the business signs off on
UAT, it's considered prod-ready. Merge
master, then deploy the new
UAT. During the way, "smoke test" the branch in
UATto ensure the resulting merge into master didn't cause any unforeseen side-effects. Once smoke-tested, release to
The problem we're coming across right now is that we may have multiple features being developed in parallel, all of which could potentially need to be deployed to the test environment for verification at the same time. The approach we've taken to solving this problem is:
FeatureB need to be in UAT at the same time, then:
- Create a new branch,
FeatureAandB, which will encompass both features
The downside to this is that it's unlikely both
FeatureB will be
UAT verified at the same time. If
FeatureA is verified and
FeatureB is not, we need to release
FeatureA to prod without
FeatureB. What we've discussed in this scenario is to:
FeatureA(not the joint branch, but just FeatureA) into
UATfor a quick smoke-test, and finally
- Once in prod, re-release just
UATso testing can continue.
The downside to this is that it directly impacts any testing for
FeatureB, and potentially unwinds any work the testers have accomplished with
How do you manage multiple features living simultaneously in each environment and being released potentially independent of one another? We can mitigate the issue a little more if we have multiple environments, or turn-around UAT testing much quicker, but at the end of the day the same problem can exist.
I'm not opposed to hearing alternative branching strategies, either.