I've found it useful from time to time to share and pin in SourceSafe when creating branches so thought I'd write it up here. The idea is that you share a labelled version, creating a new project based on that label. Each file in the project is pinned to a specific version. The advantage of this is that you need to explicitly branch each file that you intend to modify. And this in turn means that you have an easy indicator (the pinned icon) that a file has not been branched. This makes merging much easier, which can be no bad thing.
Stage 1: Share and Pin. Select the project you want to share and view its history (Tools -> Show History). Select a label. Click on the share button and select the node you want as the parent of the copied project. Don't check the "branch after share" checkbox. You will be prompted to input a name for the new project. Also select the "recursive" option This creates a new project in SourceSafe with all the files pinned to the labelled version. Do a recursive get of the new project from SourceSafe - don't use the "Open From Source Control" Visual Studio menu option.
Stage 2: Branch Solution. Branch the .sln and.vsscc files by using the Branch command from the SourceSafe menu. Then check them out.
Stage 3: Change Source Control Bindings. A nasty one this. Sometimes I manually edit the new .sln file to make the bindings point to the correct path, or if I'm feeling less gung ho I open the new solution in Visual Studio and use the "Change Source Control" menu option to change the bindings. Be aware that this can seriously damage your SourceSafe working directories. See my next post for how to fix this.
Stage 4: Working with the new project. The new files are pinned in SourceSafe - a useful visual indicator, so they need to be manually branched using the SourceSafe GUI before you can check them out with Visual Studio. Visual Studio will tell you that the checkout failed if you attempt to check out a pinned file. Select the file in SourceSafe that you need to branch and use the "Branch" command from the "SourceSafe" menu.
Stage 5: Merging changes in the branch back into the main project. Use the unpinned files as a visual indicator to help with identification of modified files. If you're feeling cautious (as I normally am) perform a manual merge using your favourite compare tool. If you want to live really dangerously, select the file in the main project and choose "Merge Branches" from the "SourceSafe" menu. Sometimes you'll see the dodgy visual merge tool, sometimes you'll receive no feedback at all!