November 9, 2010

And It's Surely To Their Credit

Surround SCM
Version Control
It’s fall in Ohio, and raking the leaves is a critical task if you want to stay on good terms with your neighbors. It’s easy to let them pile up until getting through your yard becomes an exercise in futility. The same can be true with wading through your Surround SCM branch tree if you have a lot of branches. Surround SCM includes a number of ways to manage the branch tree, which should be performed on a regular basis if you want to keep things running smoothly for your users. First, a reminder about branch types. Surround SCM includes four branch types: mainline, baseline, snapshot, and workspace. Mainline branches are completely separate areas of development. Most companies have a small number of mainlines, often only one or two. Baseline branches are for collaborative development. Snapshot branches are static, read-only branches that are normally used to mark some milestone. Finally, workspace branches are private sandboxes, normally visible only to the users who created it. The first thing you can do to keep your branch list under control is to make sure users are aware that they can hide all the snapshot branches. This option is available in the User Options, under the Tools menu. In the section marked “Source Tree”, you can hide snapshots, which for most users works well because snapshots are usually not a part of someone’s everyday work. Next, for baseline branches there are several attributes you can set that help users know what state branches are in. The attributes are frozen, active, and hidden. A frozen branch is visible to the user, but no changes are allowed. Users can still get files, for example, but anything that would result in a version change is not allowed. Frozen branches have a different icon, so users can tell the branch is not currently available for check in. Branches that are marked as inactive don’t show any of the files or repositories in them. Users cannot perform any actions on an inactive branch. Inactive branches also have a unique icon, again letting users know the branch is not in use. Hidden branches are just that, hidden from the user. Just next to the user option to show or hide snapshot branches is an option to show hidden branches. This lets an administrator hide any branches which are not frequently used, but if a particular user needs occasional access to those hidden branches, they can show them when they need to. You can combine any or all of these attributes. For example, a branch can be both frozen and hidden. Using these attributes, especially the hidden attribute, can help keep your branch tree “pruned”, allowing users to focus on the areas they need to and helping them avoid accidentally interacting with areas of your repository that are best left alone. We recently went through this exercise here at Seapine, and it was surprising how many branches we were able to mark as hidden and the improvement it made when selecting branches. So grab a rake and start cleaning. And do something about those hedges while you're at it!