Codice Software has confirmed that SemanticMerge is now available. This represents what the company says is the first language-aware diff and merge tool, and it will now be available on a monthly subscription basis. SemanticMerge sits inside Plastic SCM, a distributed version-control system engineered for users who require extensive branching and merging, distributed (multi-site/global) scenarios, and typically, high performance.
SemanticMerge 1.0 features support for Java, C#, and VB.NET and will be "soon upgraded" with C and then C++ and JavaScript. The product itself is currently available for the Windows and Linux platforms — the Apple Mac OS X version will be released before the end of the year.
90% Efficiency Boost
According to the software development team, "SemanticMerge reduces the number of lines of code to be reviewed during diff and merge by a factor of 90%, which means an incredible productivity boost. SemanticMerge has been launched after a six month beta period where we received a huge amount of feedback from the early adopters and beta testers."
The firm reminds us that if you are a .NET software application developer, then you will have heard of the CodeLens feature in Visual Studio 2013 + TFS. This decorates every method in your C# file with useful version-control information like how many times it has been modified and when, on a per-method basis.
In response to this Codice says, "We've just released 'Semantic Method History', which is… well, CodeLens done right!"
According to the Plastic SCM blog, "We used to share CodeLens limitations but now we've just released a new version of MethodHistory that is based on our SemanticDiff technology; hence, it can track methods (and properties and classes…) not only when they're moved to a different location within the same class, but also when they are moved to a different subclass, to a different class within the same file, or even when they are renamed!"
The big difference between this current version and the previous generation (and presumably with CodeLens, too) is that before, the team just walked the file version history locating the method by name. "But now we are able to calculate semantic differences between versions and do a much better job locating the methods, properties, and so on," they say.