One of the less known features in TFS is the ability to create partial branches. A partial branch is where you create a branch with only a set of subtrees of the source branch. There are a number of reasons why you might want to do it, including saving disk space on the server, saving time on merging, etc.
The reason it is not a very visible feature, is that it is enabled by the fact that branch / merge command respect your target working folder mappings.
To create a partial branch:
C:\TEMP\ws>tf dir trunk /r$/proj/trunk:$dev$qa
The next part is a bit non-intuitive as you need to cloak out the path in target space, even though it doesn't exist as yet:
C:\TEMP\ws>tf workfold /cloak branch\qa
C:\TEMP\ws>tf branch trunk branchbranch
C:\TEMP\ws>tf checkin /iChecking in branch: branch
branch:Checking in branch: dev
Changeset #7 checked in.
Keep in mind that you must have the mappings in every workspace you use to merge, as not having them will cause the branch to convert to a full branch as shown.
C:\TEMP\ws>tf merge trunk branch /rThere are no changes to merge.
C:\TEMP\ws>tf workfold /decloak branch\qa
C:\TEMP\ws>tf merge trunk branch /rmerge, branch: $/proj/trunk/qa;C6 -> $/proj/branch/qa