Branching

I know one of the areas people find lacking in Source Safe has been in its branching features. We've put a lot of thought and effort into Hatteras to be more capable and more flexible when it comes to branching and merging (remember, we're building Hatteras from the ground up, so we're not forcing new capabilties on an old engine or anything like that).

 

Of course, me saying that isn't exactly reassuring by itself. I know people have a variety of approaches and motivations when it comes to branching, and I believe we have the features most of you will need to manage your codebase the way you *want* to, instead of being constrained by limitations of the tool. To help us all ascertain this, I'd like to hear a bit about how folks out there currently deal with change management - do you use a main branch with release branches? Do you have private branches for groups or even individual developers? Do you try to keep the "tip" of your repository in a buildable state, or do you mandate periodic (e.g. daily) checkins? Various people would answer "yes" to one or more of those questions, usually with a good reason, even if there's other reasons they WISH they could answer "no". And, of course, vice versa.

 

I want to take some specific examples of how people work today, and how they WISH they could work, and show how Hatteras will let you do it. In some cases, we may even have more than one valid approach. For example, maybe you have a private branch you check in to daily, so your work always stays recent on the server (and, presumably, backed up as a result). We'll support this, naturally. But we'll *also* let you solve the same problem with shelving, if you'd rather *shelve* your changes each day, and skip the "staging" branch. Either will (almost always) solve the problem, but one may appeal more to you than another, based on your own particular situation.