I’m a novice to branching in SourceSafe, but I really need to start using it well. I think I get the concept of creating branches, but how do I “get” the right source code at build time?
For example, suppose we use the main trunk for our current releasable code. We might be simultaneously working on multiple additional functions. So we could create a branch for each of these unrelated development activites. At any given moment, we may want to make a build that has:
Code from the trunk, or
Code from the trunk plus any changes made in some and/or all of the branches
What if the branches are not yet ready to be merged into the trunk? Some development branches may, in fact, get abandoned.
How do I easily make a build that has the latest changes in branched code?
Then, the follow up question. Time goes by, and more changes are made to various code files. Now I want to “rebuild” a version that had some branches included in it. There are two kinds of rebuilds:
Exact duplicate. I want to build using the same file versions as before. Or,
Same functionality. I want to build using the latest versions of the same branches I had included before.
How do I maintain the ability to recreate old builds, or to easily rebuild specialized versions with more recent code changes?
I’m trying to use Visual SourceSafe 2005, but I’m open to the idea of going to a completely different tool, if it’s easier to use. Is Team Foundation Server significantly different in terms of source code management and configuration control?
Also, I wouldn't mind suggestions for books, on-line info, tutorials, classes, etc., for finding more information about how to perform smart configuration management and source control.