What are the branching characteristics of TFS? I am asking the question because I don't have experience of the tool.
Let me discuss what context I am putting it in...
Early Branching/Heavy Branching
If we look at the tools Perforce, Subversion, CVS, for instance, we see that branching is effectively taking a copy of the trunk. i.e. it is "early branching" of all elements which are defined to be branched, irrespective of whether those items are changed by the work that is done in that branch.
This methodology starts creating versions at the time the decision to create a branch is made for the entire tree of files. Any changes made outside that branch, that you want brought into the branch mean that you have to do merges inwards of these items as they have "early branched."
Late Branching/Cheap Branching
In comparison with more sophisticated, later-generation tools - for example, if we look at ClearCase, Plastic SCM, Accurev, Mercurial, Git - we see a late (cheap) branching policy.
That is to say that in effect the first versions created are created when a file is checked in on a branch.
This means that when changes happen outside the branch, that you wish to rebase to, a rebasing of the branch definition leads to no merge to occur on the branch.
Has anyone had a look at this issue, have they used and evaluated TFS, and what have they found?
thanks in advance
caveats: I note my terminology is not exact when we consider DVCS tools. I recognise Perforce has a round-about way of overlaying views but it's not done without great labour.