When we create the release tree, we create Main->Servicing>Fix>Release all at the same time.
There are several principles involved here. First, the Release branch is a copy of the code exactly as you ship it to the customer. This branch is often made read-only. You would
never change or merge into this branch after it is created.
Second the Fix branch is where you would do POST release engineering. Generally the changes made here are for fixing specific customer issues and are not as thoroughly tested
as service packs. However it is possible you may want to roll hotfixes up into a service pack. You flow merges on the release tree ALWAYS towards Main (Reverse Integration).
So hotfixes can roll up to the ServicePack branch (Servicing) where they can be more thoroughly tested and shipped to a broader customer base.
Then you would merge ServicePack changes up (RI) into Main.
Inverting this tree structure means you will not have a copy of what you actually released (the release or rtm branch)
It also means you have to merge back up through the release branch to bring a fix to main.
Finally, the incremental cost of a creating a branch is relatively low UNTIL you start making changes. Since Deltas are all that TFS stores. When you Branch A > B, B has no
If you don't need a separate Release branch and HotFix or Servicing branch (for archival or auditing purposes), then just create one branch in the release tree that you use for fixing/servicing.
But if you need both, please create them in the suggested hierarchical relationship. You will (I hope) thank us later.
VS ALM Ranger