About SemanticMerge

The diff and merge tool that understands your code.

SemanticMerge is a source code diff and merge tool based on language parsing designed to deal with code that has been moved and modified. Code merges are based on structure, not on location, so unlike text-based merging, positional changes are no longer an issue. All team members can freely refactor and re-arrange their code safe in the knowledge that they will be able to merge it easily with SemanticMerge.

Helps you keep the code clean
All team members can freely refactor and rearrange their code because they know they’ll be able to merge it easily with SemanticMerge.

Helps to better understand your code changes
It doesn’t matter if one team member refactored an entire file, while another fixed a critical bug; you’ll understand what happened when you merge with SemanticMerge.

Merges are based on structure, not location
Unlike a text-based merge, SemanticMerge parses the code and extracts the structure; therefore, position changes will no longer be an issue.

Avoids incorrectly identified automatic merges
SemanticMerge can detect when a method* was modified in parallel, even when no "text-block-conflicts" occur; thus enabling you to review the changes. Traditional merge tools would have identified the change as a trivial 'automatic' merge.

SemanticMerge deals with language-specific conflicts
Add two different "usings" clauses (C#) on two different locations. Add the same method twice in two different locations. These two scenarios, among others, will be automatically resolved.

Keeps it simple
SemanticMerge handles structure conflicts, but will use a text-based merge to handle conflicts inside the bodies of methods, functions, properties, etc...

SemanticMerge currently supports C#/VB.NET, Java and C languages with C++ and Javascript coming soon.