Many tools do content merges. And many don't do a very good job at it. SnapshotCM ships with the open source 3-way merge TkDiff tool, and a batch 3-way merge using the open-source diff3, plus the ability to configure and use most any third party tool for resolving merge conflicts. Since the third-party companies specialize in merge, you should consider updating to one of these tools if your job involves significant file content merging. This article updates the merge tool review we last did in early 2003.
While there are many "merge" tools, we look only at tools that perform automatic merging with the help of a common-ancestor file, usually called 3-way merging. Simple diff and merge tools can only tell you which lines differ in the versions to merge, but cannot help you choose which difference to include.
By contrast, the common ancestor revision allows a 3-way merge tool to determine, line by line, in which branch a line was changed. This key difference allows a 3-way merge tool to focus your attention on those regions where the same lines have been changed in both branch revisions (the conflicts) and automate the merging of those regions where only one branch is modified.
Many commercial merge tools also can compare two hierarchies of files, display two-way differences, and more. But that is outside the scope of this comparison. We focus only on the file merge features of the tools.
All the tools examined provide advantages over the diff3 and TkDiff solutions built into SnapshotCM. All evaluated tools display merge tasks visually, recommend and apply changes based on the common-ancestor, and support in-place editing to resolve conflict problems.
My primary efforts focused on three tools: Araxis Merge Professional, Guiffy SureMerge and Prescient MergeRight. If you know of another 3-way merge tool you'd like to see added to this comparison, please let us know.
Guiffy SureMerge displays the merged revision at the top, with the branch revisions at lower left and lower right. Difference areas are highlighted and left/right choices are as simple as pressing a button. Automatic merge can be invoked, in which case SureMerge will choose output regions based on an analysis of where a change came from. Areas with multiple changes (merge conflicts) can be edited in place. SureMerge also does region analysis to flag adjacent, but non-strictly-conflicting change regions, which can catch certain types of subtle conflicts.
SureMerge provides filters to ignore certain differences within lines (such as keyword differences), especially useful for files with always-different keyword expansions, such as date and revision number.
For this evaluation, I configured and enabled a keyword filter and accepted the default actions. Typically, I'd select the OK button on the initial info dialog, and if no conflicts, select the "Save Merge and Exit" button. Quick and easy.
SureMerge is a multi-platform Java based solution. As such, its start up performance isn't particularly fast though its overall performance is the best of the tools tested. SureMerge has the lowest purchase price of the tools, and, while not as graphical as the other products tested, its output is easy enough to understand and the quick and easy resolution process was much appreciated.
Araxis Merge Professional, shown below, displays three windows side by side, with the common ancestor in the middle and the branch revisions on the left and right. Differences are shown in-line in color with lines drawn from the difference to where that difference would be inserted (or where it was deleted) from neighboring revisions. Differences can be copied between the three displayed revisions with the click of a button. Araxis provides a "Merge to Ancestor" operation, and filters to ignore certain differences within lines (such as keyword differences),
For this evaluation, I configured and enabled a keyword filter. For each merge, I selected the Automatic Merge button and Araxis Merge showed me how many conflicting regions it found. I then used the conflict navigation buttons to navigate to each conflict in turn to resolve them. To save the results, I closed the window, and selected OK to save the changed file. In the simplest case, I had to select the Automatic merge button, the close button, and the save button. But unlike Guiffy, only the save button was the default, so more mouse navigation was needed.
Araxis Merge is a Windows-only solution. It starts quickly and reuses its main window. The side by side display is intuitive enough in simple situations, but I found that it gets a bit confusing in conflict and identical merge situations, the later of which can occur with repeated merges. I did not find a means to cause the automatic merge to be invoked automatically at tool start.
I also found that if the only difference between conflicting files was in keywords that were ignored, one had to do an explicit save to create the output file. One can also run into problems if you select automatic merge after doing a manual merge in a conflict situation, as manual changes can be reversed.
Another minor irritation was its question about merging to a read-only file, when the output was directed to go to a fourth writable file. This was easily overcome by answering Yes to the question, which turned on the ability to edit read-only files and prevented the question from being asked again. But it seems like a detail they should fix. After all, I really didn't want to edit a read-only file.
Prescient Software's MergeRight displays the ancestor and branch revisions together in a concordance view. Regions common to all three revisions are displayed once in a collapsible area spanning the width of the window, while regions added or removed from either branch are shown on the left or right half of the window and color coded according to recommendation. Manual merge selection is as easy as pressing a button.
MergeRight 2000 is a multi-platform Java based solution. As such, its start up performance isn't particularly fast. However, it is the most intuitive display of the merge problem I've seen, which should more than make up for the start up time delays. MergeRight 2000 seems more like a prototype than a polished product, with far too many little things that, in my opinion, need to be improved. For example, the initial window geometry is not remembered from previous uses and is too small to suite me, so I needed to resize it every use. None of these will keep you from using the product, but they make it less pleasant than it should be.
The demo version would not process files of the size I was using during this evaluation, so these comments are based on the evaluation of 2 years ago. In this case, this appears reasonable as MergeRight 2000 seems to have had no updates in 4+ years. In fact, the registration email and URLs refer to a domain not even owned by the selling company! While I'd like to see the potential of the concordance view be fully realized, it appears that the product developer has moved on to other things.
Any of these tools will do the job for you. Araxis is the most expensive while Guiffy SureMerge is the most affordable. The on-line help for SnapshotCM includes example specifications for all three of these tools. So if merge is your job, make it a bit easier with one of these additions to SnapshotCM.
To see SnapshotCM in operation with any of these tools, click on the vendor links above and register for an evaluation. You can also get a free SnapshotCM evaluation at http://www.truebluesoftware.com/.