Product InfoCustomer TestimonialsConcept and Reference DocumentsLicensing Terms and PricingCompany Location, Mission and VisionAnnouncements & NewslettersHome

SnapshotCM Newsletter for May, 2012


  • Editor's Blog
    • SnapshotCM Merging is Cool!
    • Product-Line Update
    • Install Errata
  • How to Deliver Faster, Better, and More
  • Recommended Releases
  • Links We Like

Editor's Blog

A Merge Experience

A while back, I contributed to an external project which used Subversion with the Tortoise interface for version control. It was a small group, just two of us doing software, plus several others designing hardware and algorithms. For routine check in, update and tagging, it worked acceptably. However, when my co-worker checked in over top changes I'd made, I found it exceedingly difficult to merge the divergent changes. (That he so easily did so is another topic.) The approach I ended up taking was to merge manually. Fortunately there were not too many files.

What I experienced is what several of my customers familiar with Subversion also have reported, which is that SnapshotCM handles merging better than any of the free tools. SnapshotCM uses terms like Copy Changes, Promote and Update, but they are all merge from one branch (snapshot) into another with minimal effort. In fact, developers routinely perform such merges accurately and in mere seconds in SnapshotCM.

Product-Line Update

The SnapshotCM Product-line release will happen this month. This major upgrade to SnapshotCM improves productivity and efficiency for all users in a product-line structured shop. Developers are helped by greatly simplified and automated workspace creation from the product-line definition, as well as product-line update and promote. In addition, administrators will appreciate that product-line branching, tagging, merging and more can be done with ease. After the official release, we will describe the product-line features in greater detail.

If you can't wait and would like to provide pre-release feedback on the product-line functionality, contact us this week to access the latest beta. All functionality is complete and ready for release, pending final beta feedback, and we'd like to identify a few teams to give it a try in the next few days.

Install Errata

If you've already updated to 1.85 or newer, you are not affected by this error. If you get an error message when first installing the 1.85 or newer release on Windows and the path listed contains forward (rather than backward) slashes, the fault is an improper registry entry left-over from a pre-1.85 server install. This only affects systems which have (or once had) the SnapshotCM server installed, and which configured a database location containing forward slashes. Since this does not affect most users, a reasonable approach is to proceed with the update. And if the error appears, apply the fix described below.

If you want to check before you upgrade (or need to fix it during an upgrade), open the windows registry editor and navigate to the HKLM\SOFTWARE\True Blue Software\SnapshotCM\1.0 key (HKLM\SOFTWARE\Wow6432Node\True Blue Software\SnapshotCM\1.0 on 64 bit systems) and examine the DatabaseDirectory value. If not present, or it contains a valid windows directory path with only backward slashes, then the installation will not be affected. Otherwise, edit the value, replacing forward slashes with backslashes and proceed with the update.

Links We Like

Don't forget to check out Links We Like at the end of the newsletter. The two on pronunciation are both pretty fun!

As always, we welcome your feedback and ideas.

Scott Kramer

How to Deliver Faster, Better, and More

Teams make software development happen. Yes, the lone person can do a lot, but effective teams can accomplish more than is possible with lone individuals. What makes a team effective? Great people plus great communication. That's it. Whether its communicating or setting goals, resolving conflicts, building relationships, making decisions, or developing software, you need communication between capable people.

My son plays soccer. At his age, the boys are playing as a team, passing the ball, playing positions, etc. The days of the pack chasing the ball are behind them. While quick to help out if someone gets in trouble, they know that effective play mostly involves each playing their position and communicating during the game. Their challenge is combine their team and individual skills. They need both to succeed.

In a similar way, software development teams benefit from both individual and team productivity skills as well as supporting tools. By coordinating individual changes and facilitating a balance between individual effort and team coordination, team productivity tools facilitate communication that helps teams reach their potential. Two keys make this possible:

  1. A stable environment for individual work. A stable, low overhead environment allows a developer to work productively and to stay focused on the task at hand. A constantly changing environment, on the other hand, will distract, frustrate and sap the productivity of your developers. Without stability inside the tool-provided environment, many users will simply work around the tool to get their job done. This too, however, comes with a price and may lead to further instabilities down the road for not only the user, but also others on the team. If a version control tool is going to be effective, it must provide a stable, low overhead working environment for its users.
  2. A structured method for integrating completed changes. The structure makes it clear and easy for users to publish their completed changes to their team. The structure also makes it clear where to find changes that have been completed by their teammates so they can integrate them into their own work. Since this communication primarily involves completed changes and then only when those changes are ready, both individual and team stability are enhanced. The structure also helps to reduce not only the cost of coordination, but the chance that a change will be inadvertently lost. Effective version control tools must provide stability-enhancing team coordination features.
  3. Project management. Project management provides the framework wherein scheduling the order of changes is determined. For example, two tasks, each expected to affect the same code, can be scheduled sequentially to avoid unnecessary merging, while tasks that only overlap slightly or not at all can be scheduled in parallel. This scheduling can be done informally, but is important to moving forward effectively.

Standard Solutions

Most tools provide a stable environment for individual work through a user-private workspace. A private workspace with a team-shared version branch adequately supports small changes and small teams. In a shared branch, a concurrency mechanism coordinates simultaneous changes to common files so that no change gets lost. Common concurrency mechanisms include strict locking, concurrent locking with merge, file ownership where only a file owner can make changes and the infamous brick (he who has the brick may make changes).

Shared branches have the limitation that intermediate work cannot be checked in, even for use by only a subset of the team. To compensate for this, a private branch provides the necessary isolation and control, but it also adds to the complexity of publishing the completed change. Most tools provide a mechanism for merging changes between branches, but all too often such merging must be done by hand, one file at a time. The better tools guide you through the process for a collection of files, while the best solutions provide project-level views and task-level change copying between branches.

SnapshotCM's Solution

SnapshotCM provides team coordination suitable for a variety of teams. For coordinating changes on a shared branch, SnapshotCM supports both strict-locking and read-modify-merge models, with full support for third-party content merge tools, in addition to two built-in tools.

For coordinating changes between branches, SnapshotCM's fast project-level branching and merging capabilities provide excellent support for understanding, integrating and publishing completed changes. Most of the hard details are handled automatically and presented visually, making the branch merge fast and reliable.

Whether you have a small team on a shared branch or a large team with many branches and sub-teams, SnapshotCM provides the structure you need to balance the competing needs of isolation and coordination on your team. SnapshotCM delivers the essential tools to enable your team to reach their potential.

Your Solution

How does your solution compare? Do you currently experience problems with lost changes or with intermediate work being checked in? Do you use branches? If not, is that because they are too hard to use even though you could benefit from them? If you do use branches, how easy are they to manage? To understand? To merge? How many branches do you currently have?

Just as a soccer team learns to work together, thus leading to improved play, so too will your team's performance improve as you use the advanced team coordination features of SnapshotCM. Check us out by taking advantage of our free evaluation. Go to for all the details.

Recommended Releases

The following releases are recommended:

  • - The newest features and fixes.
  • 1.84.2 / - A known stable release.
  • 1.82.06 / 1.82.07 / 1.82.08 - stable version with the old (single mount) workspace model.

If you are running any other release, we recommend that you update to the latest recommended version that your license allows.

For a complete list of user-visible changes, see the Change List.

Links We Like

Links we find interesting, fun, or occasionally useful.

We are looking for interesting links to share. Send to

Please forward this newsletter to interested colleagues, and if you are not a subscriber, keep up-to-date by subscribing to SnapshotCM News today!