What it does?
As programmers we always expected merge to be this way: first parse the code, then get the structure and finally merge based on that.
This way a case like the one below, a nightmare for text-based merge tools, involving methods moved to different classes and modified, becomes trivial.
Location independent method* merge
The first "mind blowing" feature in SemanticMerge allows you to move your methods around, refactor, and cleanup the code, and SemanticMerge will still be able to resolve the merge because it merges on a method-by-method basis.
In the scenario below, a traditional text-based merge tool will have trouble trying to match
method2() was moved up on
SemanticMerge doesn't really care where
method1() is, it just knows that it has been modified by two contributors and will place the result in the correct place.
* Applies to properties, classes, methods, namespaces... it is a "structure based" merge and not text-based.