[oXygen-user] 3-way merge?

George Cristian Bina
Fri Aug 17 04:37:17 CDT 2007

Hi Lars,

Thanks for bringing up this issue.
Syncro SVN Client has 3way diff and merge support but provides that only 
as text, that is no 3way XML diff support.

Now a little technical details.
When you have variant A, B and a common ancestor C a 3 way diff compares 
both A and B against the common ancestor. Then it compares the result of 
these two diff operations to decide if a change is incoming, outgoing or 
a conflict.
What we get now from the diff is a set of mappings from one file to the 
other. Let's take a simple case, a single change between A and C, an 
addition and let's consider we have no changes between B and C. So what 
we know is that something was added and we know the offset in C where 
that was added. What we need to find is the offset in B. The problem 
with XML is that in B that offset may be different, because although 
there are no changes between B and C they can be represented in a 
different form, see

<a test="1"/>


In case of line based diff for instance the above problem is easily 
solved as one can just count the lines in B and C to determine the 
corresponding offset.

End technical details.

We plan to add 3way diff and merge XML aware support in oXygen in the 
future, we know, as explained above, the problem and we have thought of 
already of a couple of possible solutions. This is not scheduled however 
for the very next release.

Best Regards,
George Cristian Bina - http://aboutxml.blogspot.com/
<oXygen/> XML Editor, Schema Editor and XSLT Editor/Debugger

lars wrote:
> Hello,
> The XML Diff/Merge tool that comes with Oxygen looks pretty nice. However
> there doesn't seem to be provision for a 3-way merge (using a common ancestor).
> This kind of merge is a common requirement when a repository of XML documents
> is continually modified by a distributed team or company; users need to keep
> merging others' changes to documents with their own changes before committing
> modified documents to the repository. This would tie in well with the Synchro
> SVN client, which allows you to perform merges in exactly this situation, but
> apparently without the benefit of common-ancestor-awareness (?), or at least
> without XML-awareness and common-ancestor-awareness at the same time.
> Are there any plans to incorporate 3-way (common ancestor) merge into Oxygen
> Diff/Merge tool?
> Regards,
> Lars
> _______________________________________________
> oXygen-user mailing list
> http://www.oxygenxml.com/mailman/listinfo/oxygen-user

More information about the oXygen-user mailing list