Channels ▼
RSS

Global Developer

World's First 'Language-Aware' Source Code Merge Tool


Version-control specialist Codice Software has launched a language-aware source code merge tool called Semantic Merge. Billed as a world first, the tool uses "merge technology" built into the firm's Plastic SCM core product to consolidate files that are heavily refactored in parallel by different developers, regardless of the code programming language.

More Insights

White Papers

More >>

Reports

More >>

Webcasts

More >>

It will be first available for developers using C# and Visual Basic .NET as part of the tool's beta launch release, with plans to extend use of the tool for developers using Java and C++. Semantic Merge is not limited to developers using Plastic SCM and can be configured to work with Git, Subversion, Perforce, ClearCase, Team Foundation Server, Mercurial, and many others.

Modern Agile software development is based on a shared working pattern typified by "modify then merge" (then repeat) working practices. Coders work in parallel on the same codebase performing concurrent changes, potentially inside the same files that need to be reconciled back together (merged in version control terms).

In order to perform these code merges, developers rely on merge tools.

As readers may know, merge systems today use text-based algorithms. But these tools won't actually consider the programming language the code is written in — just the modifications on the text — so existing merge tools are language agnostic and have a wide operation range.

However, not being able to act based on the specific programming language structures means the merge tools are heavily dependent on the position of the texts being modified, which strongly restricts developers' ability to perform changes concurrently and improve code quality and readability by refactoring.

In light of this situation, Codice says that coders can use Semantic Merge to track and preserve all changes performed concurrently, i.e. making sure that all code is assembled back together precisely.

The new three-way merge tool understands code structure. It doesn't use a textual comparison method to compare its three contributors. Instead, it uses a new approach to merge, which stems from the work Codice Software performed to develop the Plastic SCM merge system and Xmerge technology, and adds language-dependent parsing to create a source code merging machine. Using this language-aware source code tool, software developers can restructure existing bodies of code much more quickly and improve overall code quality and reliability.

Every day, millions of lines of code are written, modified, moved, and reorganized as developers update and create new features in games, devices, and applications. In order to improve code quality and readability throughout the software lifecycle, developers engage in refactoring, a software practice that requires frequent structure changes.

Software developers often work on the same codebase performing concurrent changes, potentially inside the same files, that eventually need to be merged in version control terms. However, merging code becomes a difficult process because existing tools use text-based algorithms, which are heavily dependent on the position of the texts being modified and don't consider the programming language the code is written on.

"We noticed that there were a large number of merge scenarios that could not be managed by current text-based, language agnostic merge tools" said Francisco Monteverde, CEO of Codice Software. "We set out to create an innately smart, language-aware tool. Our Semantic Merge tool is able to combine files that are heavily refactored in parallel by different developers and rapidly incorporate changes that no other merge tool on the market can achieve based on text-comparison algorithms alone. We are committed to offering superior technology in the distributed versioning control system, and now with the release of Semantic Merge, our merging technology is second to none in the industry."

Semantic Merge


Related Reading






Currently we allow the following HTML tags in comments:

Single tags

These tags can be used alone and don't need an ending tag.

<br> Defines a single line break

<hr> Defines a horizontal line

Matching tags

These require an ending tag - e.g. <i>italic text</i>

<a> Defines an anchor

<b> Defines bold text

<big> Defines big text

<blockquote> Defines a long quotation

<caption> Defines a table caption

<cite> Defines a citation

<code> Defines computer code text

<em> Defines emphasized text

<fieldset> Defines a border around elements in a form

<h1> This is heading 1

<h2> This is heading 2

<h3> This is heading 3

<h4> This is heading 4

<h5> This is heading 5

<h6> This is heading 6

<i> Defines italic text

<p> Defines a paragraph

<pre> Defines preformatted text

<q> Defines a short quotation

<samp> Defines sample computer code text

<small> Defines small text

<span> Defines a section in a document

<s> Defines strikethrough text

<strike> Defines strikethrough text

<strong> Defines strong text

<sub> Defines subscripted text

<sup> Defines superscripted text

<u> Defines underlined text

Dr. Dobb's encourages readers to engage in spirited, healthy debate, including taking us to task. However, Dr. Dobb's moderates all comments posted to our site, and reserves the right to modify or remove any content that it determines to be derogatory, offensive, inflammatory, vulgar, irrelevant/off-topic, racist or obvious marketing or spam. Dr. Dobb's further reserves the right to disable the profile of any commenter participating in said activities.

 
Disqus Tips To upload an avatar photo, first complete your Disqus profile. | View the list of supported HTML tags you can use to style comments. | Please read our commenting policy.
 

Video