Lets say you have an application. This application is to be QA tested and deployed to production. There are some constraints on the application lifecycle.
- Only one version of the app will ever exist in production.
- Once deployed to production if required hot-fixes may have to be developed. Hot-fix are narrowly targeted to fix specific high severity defect and not introduce new features. The hot-fix code change should be reverse integrated to other branches.
- Before relessing to production for new feature release it must go through QA cycle.
- After releasing to QA it takes significant time for testing the app. At the first QA cycle if QA opens 20 defects they need to be fixed in next release for QA without any more features to test. If QA team then reopens say 10 defects then on the next release to QA they only want those 10 defects to be fixed. No other defects or any new features. The next feature release can only happen after defect count is 0 (or some defects are decided to be not fixed or enhancement etc.).
- Since the QA cycle takes time, during that time development cannot stop. New features should be continued to be developed for next feature release.
How would you setup your TFS branching model.