SemanticMerge Features

Visual Diff and Merge
Compare
Location independent merge
Merge Locations
Track multiple added blocks
Multiple Block Handling
Solve language specific conflicts
Language Conflicts
Visual Diff and Merge

Visual Diff and Merge

Representing a conflict visually turns a complex refactor into a trivial operation. The “Listen()” method has been moved to two different locations and also modified in parallel, Visual merge makes it is easy to understand.

Location independent merge

Location independent merge

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 “src” and “dst”, matching “method1()” with “method2()”, since “method2()” was moved up on “src”. 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.

Track multiple added blocks

Track multiple added blocks

Two developers start working from a “base” file and then they add a “new_method()” in two different locations. During the merge, a text-based automatic merge tool would incorrectly solve the conflict by duplicating the code. SemanticMerge would detect this situation and let you choose the final location. Where “new_method()” is not 100% identical, a “two-way” merge of the method can be run to solve the conflict.

Solve language specific conflicts

Solve language specific conflicts

Regular text-based merge tools won’t detect the fact that the new  ‘using’ clause is actually the same, which would typically only be detected at the build phase. SemanticMerge detects that it is the same 'using' clause and will add only one of the two clauses.