What are the branching characteristics of TFS?
Early Branching/Heavy Branching
If we look at the tools Perforce, Subversion, CVS, for instance, we see that branching is taking a copy of the trunk. It is "early branching" all of the files which are defined to be branched, irrespective of whether those files are changed in that branch.
This methodology starts creating new versions of files, at the time the decision to create a branch is made, for the entire tree of files.
One of the biggest disadvantages is that any changes made outside that branch (typically in the trunk), that you want to bring into the branch, require per-file merges inwards of these files as they have "early branched."
Late Branching/Cheap Branching
In comparison with more recent tools - for example - ClearCase, Plastic SCM, AccuRev, Mercurial, Git - we see a late (cheap) branching policy.
We see that first new versions in a branch are only created when a file is checked in on a branch.
This means that when changes happen on the trunk that you wish to rebase into your branch, no merges for unchanged files occur.
How does TFS behave?
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.
See Question&Answers more detail:
os 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…