We are relatively new to TFS and are having difficultly finding a good branching strategy that will allow us to maintain a stable trunk branching strategy. Our currently strategy is to have a single stable 'Main' trunk branch that we use to spin off new
branches for individual release development. These release branches act as integration branches and are used to spin off feature branches as major features are worked on, and sometimes defects are fixed directly in the release development branches. As feature
development completes feature branches roll up into the release development branch.
Our structure looks as follows:
--- Development (next release)
------ Feature A
------ Feature B
This works pretty well in practice, the main difficulty comes when we need to start development on the next release as the current release is wrapping up. We are not yet at a point where we are stable enough to merge to trunk (main), yet we need to branch so
that some teams can begin new feature development. We are left with the following choices:
1) Create a new development branch from Main to start new development. This isn't ideal as this branch will be missing any new features that have not yet been merged before the release is stabilized.
2) Create a new development branch from the previous development branch. This pulls in all the feature code from the nearly completed release but in our experience TFS is incapable of re-parenting or merging to this branch from Main once the upcoming development
has been merged to Main. All we can do is perform a baseless merge, despite that this branch ultimately comes from Main in its hierarchy.
I would appreciate any guidance on this situation. We are not yet at a point where we are 100% SCRUM and can use a complete feature branch workflow from Main, so we will need to utilize some sort of branching structure in our organization.