TFS Structure

Topics: Developer Forum
Jan 25, 2007 at 11:48 AM
I'd recommend restructuring the TFS layout to:

root
-Branches
-Trunk
--Solution

so that in the future you cna do branching and merging very easily. You just branch to a new folder under Branches and then you can merge back into the trunk.
Coordinator
Jan 25, 2007 at 4:53 PM
Yeah I wasnt really sure how TFS handled branching, i was hoping it was more than just "the same files in a different folder" kind of thing like SVN has.

Also, on the topic of branching, do you think that I should create a branch for each new release, so as to keep the trunk "intact", and then merge the branch back into the trunk on release day?
May 1, 2007 at 8:09 AM
I don't see much of a need for a $/workspace/Solution, especially on a smaller project that's meant to be integrated with a solution. As for the branching - in a smaller dev group that isn't actively maintaining older copies via hotfixes or patches, I'd save them for features not going into the next release.

Branches can be reserved for "research" or "unstable" matters, Trunk should always be tip/latest and should never be broken. Checking in broken stuff to tip is a no no. There are various reports you could run - but it seems that your current developer pool is 3 people, and "annotate" (blame) should work just fine. In terms of how they work: the rumor I hear at work is that branching is supposed to be cheap according to TFS propaganda. Yet, they eat orders of magnitude of diskspace in pre-SP1.

The biggest thing to remember is to label consistently and make sure every release is labeled. Never mutate a release once dropped, ever. You can always branch or otherwise operate on a label at a later point in time. Publish a labeling guideline and make sure all devs follow it. Labels are supposed to be cheap, and I use quite a few myself heh.

If/When you get into using branching and merging make sure to pick up TFS Sidekicks as well as the powertools and the SP1 pack. Things like TreeDiff are awesome, as is annotate and tracking the lifecycle of branches in a useful UI.