We will be starting a new project this month. The project will be 1 year and production deployment will only occur towards the end of the project.
We will be doing iterative development (1 month per iteration), so this means we will drop features to Test environment at the end of each iteration for QA testing.
Our branching strategy is:
- Trunk - All development will happen on trunk.
- Feature Branch - Branches off trunk will be created on a per need basis for development of large features which could potentially be breaking if done on trunk
- QA Release Branches - At the end of each iteration, a branch of trunk will be created. This branch (which includes a version number) will be released to Test environment. All critical and blocking bugs found in this version will be fixed on this branch and fixes will have to be merged to trunk. Non-critical/trivial bugs will not be addressed on the QA release branch and will only be fixed in trunk since the QA release branch will be thrown away after the end of the next iteration where a new release branch will be created off trunk.
- Production Branch - this will be the latest QA release branch at the end of the project. This will be tagged and all production bug fixes will be on this branch and merged to trunk.
Is this a correct branching strategy? Is there anything else that we've missed to consider?
We're using SVN.