How patterns and practices Does Source Control with Team Foundation Server (TFS)

We've used TFS for more than a year, so it's interesting to see what we're doing in practice.  If you looked at our source control, you'd see something like the following:

+ Project X version 1
+ Project X version 2
- Project Y
    |----Branches
    |----Releases
    |----Spikes
    |----TeamStuff
    |----Trunk
        |----Build
        |----Docs
        |----Keys
        |----Source
        |----Tools

While there's some variations across projects, the main practices are:

  • Major versions get their own team project (Project X version 1, Project X version 2 ...)
  • The "Trunk" folder contains the main source tree.
  • Spikes go in a separate "Spikes" folder -- not for shipping, but are kept with the project.
  • QFEs use "Branches".  Branches are effectively self-contained snapshots of code.
  • Bug fixes go in the main "Source" under the "Trunk" folder
  • If we're shipping a CTP (Customer Tech Preview) next week, but we have a good build for this week.  We create a "shelveset" for the CTP.  
  • Within each release we have a number of Customer Tech Preview (CTP) releases, we "Label" those within the structure so we can go back and find at any point in time

I'll be taking a look at how customers and different groups in Microsoft have been using TFs for Source Control.  If you have some practices you'd like to share, I'd like to hear them.  Comment here or send mail to VSGuide@microsoft.com