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

2 item(s)

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 branch
branch

branch:
dev

C:\TEMP\ws>tf checkin /i
Checking 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 /r
There are no changes to merge.

C:\TEMP\ws>tf workfold /decloak branch\qa

C:\TEMP\ws>tf merge trunk branch /r
merge, branch: $/proj/trunk/qa;C6 -> $/proj/branch/qa

Cheers