One advantage with Team Foundation is that it offers a lot a functions such as label, branching, merge, ... but how to use it?
My First approach, bad one
My first approach was to create a branch and to work on this branch and before each release, make a merge to the main and then delete the branch. So if a bug occurred into the current release, I can correct it into the main.
But there are problems:
- I delete the working branch before each release, by this way I always lose the history of my source files
- If a bug occurs into the current release, I correct it into the main, but how to merge it into the working branch? It's possible to merge a branch to a baseline, the version from which the branch comes from, not in the other direction, so unable to apply the correction into the working branch.
An other approach
This approach is better, it's not the only one but this is the simplest way for little team.
The main is the current working branch and after each release, in this case we don't merge but we do a branch with the name of the release (version), so I keep my history into the current working branch and I can merge a bug fix from a release branch to the main/working branch.
There is a good document which explains this structure with other on Codeplex