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

SnapshotCM Newsletter for January, 2012


  • Editor's Blog
    • Continuous Integration
    • New Release
    • Product Line Beta Update)
  • SnapshotCM in Depth: Viewing Differences
  • Recommended Releases
  • Links We Like

Editor's Blog

Continuous Integration

Continuous Integration (CI) is the practice of frequently integrating and verifying code changes with the repository baseline. The CI philosophy guides one to automate every step that contributes to a release such that a new working and up-to-date product version results from each successful change. Frequent iteration of the build-test-release process combined with quick feedback on failures enables problems to be identified and fixed before the context of the change is out-of-mind.

Of course, the faster the feedback, the better. And with that in mind, the newest incremental release of SnapshotCM adds a new option to wupdate. Nicknamed scorch, wupdate -C incrementally updates and cleans an existing workspace: all non-versioned and non-working set files and directories are removed, and all working set files are updated. The result is a workspace that exactly matches what would result from running wupdate in an empty workspace, but it's much faster (assuming that successive builds in a workspace use mostly the same set of files).

We did our testing on a moderately sized workspace. Starting with 3500 files (1600 versioned), scorching took just 1.1 seconds, compared to remove and populate, which took 120 seconds. This was on a Windows 7 client system with sufficient memory that all local file status information was in the system cache. On a very busy or resource limited system, results will be slower, but even a 10 second scorch would still be a 12x improvement!

If you'd like to see your CI build times shrink, replace your remove and check out steps with the new wupdate -C "scorch" command and enjoy the reduced build times!

New Release

A incremental release containing the scorch functionality and several fixes is posted. Of interest to sites experiencing reverse DNS configuration issues, the new server tries to mitigate the performance impact on users, by caching failures and only attempting reverse DNS lookups periodically, rather than every client connection.

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

Product Line Beta Update

The beta feedback so far has been good. I'm expecting to have additional functionality ready in a few weeks. I will let beta users know directly when that occurs. It's not too late to be included, simply send me an e-mail!

As always, we welcome your feedback and ideas.

Scott Kramer

SnapshotCM In Depth: Viewing Differences

SnapshotCM provides powerful options for viewing the content differences of files. In this article we look in depth at the options for displaying file differences.

Selecting the Format and Other Options

The GUI's Difference Options dialog allows you select the difference type to display. It is opened when using a menu to perform a diff, and also if the shift key is held down when the tool-bar "Show Differences" button is pressed. The dialog is shown here:

In addition to selecting the difference type, you also can change the specific revisions to compare, select from several output options, and set the selected options as the defaults for future compares.

Difference Types

SnapshotCM provides five difference types: in-line, context, unified, tkdiff and external.

The in-line format type displays just the lines which are different between two files. Example output, with two modified lines, looks like:

<             VALUE "FileVersion", "1, 85, 2, 6"
>             VALUE "FileVersion", "1, 85, 2, 8"
<             VALUE "ProductVersion", "1, 85, 2, 6"
>             VALUE "ProductVersion", "1, 85, 2, 8"

All lines which are identical in the two revisions are suppressed. We often use this format type to quickly review differences in many files in a quick, concise way.

The context format type displays differences with two identical lines of context before and after the difference lines. The same output as above then looks like:

*** 82,91 ****
              VALUE "CompanyName", "True Blue Software Company"
              VALUE "FileDescription", "SnapshotCM DLL"
!             VALUE "FileVersion", "1, 85, 2, 6"
              VALUE "InternalName", "libgui"
              VALUE "LegalCopyright", "Copyright (c) 2000 - 2011"
              VALUE "OriginalFilename", "libgui.DLL"
              VALUE "ProductName", "SnapshotCM"
!             VALUE "ProductVersion", "1, 85, 2, 6"
--- 82,91 ----
              VALUE "CompanyName", "True Blue Software Company"
              VALUE "FileDescription", "SnapshotCM DLL"
!             VALUE "FileVersion", "1, 85, 2, 8"
              VALUE "InternalName", "libgui"
              VALUE "LegalCopyright", "Copyright (c) 2000 - 2011"
              VALUE "OriginalFilename", "libgui.DLL"
              VALUE "ProductName", "SnapshotCM"
!             VALUE "ProductVersion", "1, 85, 2, 8"

Note that the two difference sections are merged since their context's touch, and that the context is duplicated in the before and after sections.

The unified format type is an alternative context format and looks like:

@@ -82,10 +82,10 @@
             VALUE "CompanyName", "True Blue Software Company"
             VALUE "FileDescription", "SnapshotCM DLL"
-            VALUE "FileVersion", "1, 85, 2, 6"
+            VALUE "FileVersion", "1, 85, 2, 8"
             VALUE "InternalName", "libgui"
             VALUE "LegalCopyright", "Copyright (c) 2000 - 2011"
             VALUE "OriginalFilename", "libgui.DLL"
             VALUE "ProductName", "SnapshotCM"
-            VALUE "ProductVersion", "1, 85, 2, 6"
+            VALUE "ProductVersion", "1, 85, 2, 8"

Many prefer this more concise format as it avoids repeating the unmodified context lines. Both context formats enable a more in-depth understanding of revision differences. And both also support, when Show C function is enabled, displaying the C-language function context in the header of each diff section.

When the in-line, context or unified format is selected for a multiple file diff, the output is aggregated into a single report window if the Reuse Dialog option is selected.

The tkdiff format type invokes the public domain tkdiff tool to display the differences. Tkdiff displays the full revisions side by side while highlighting changed sections. Since this provides the complete context of a change, it is especially useful for understanding or reviewing changes before committing them to the repository.

The external format type invokes a user-defined command to display the output.

Command-line Options

The wdiff command can also invoke any of these formats, including calling tkdiff or other external difference tool. To cause wdiff to call tkdiff, invoke as wdiff -Ptkdiff. This works even on non-Windows system if you've installed the public domain tkdiff tool.

For additional information, please refer to the on-line help for the Difference Options dialog and to the wdiff manual page.

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.

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