Hi folks, we have thought about supporting native XML patches in Darcs. Since OpenOffice documents are essentially XML, this should be a way to support native OpenOffice patches. The idea behind is to give applications a chance to analyze and query those native patches, e.g., for better merging etc. ...
Initially, we did some performance measurements that confirmed that for OpenOffice XML trees (wide and flat) XyDiff seems to be appropriate. http://www-rocq.inria.fr/gemo/XyDiff/cdrom/www/xydiff/index-eng.htm There will be a research paper on this year's DocEng in Bristol. Then I grabbed a rather recent darcs copy and tried to implement native XML patches based on XyDiff. This is what I did: - Haskell Interface to XyDiff (patches are invertible) - XML Patch Wrapper Haskell module to abstract from actual XML diff implementation - native XML patching for XML files (based in regexes similar to binary files) - simple diffing/patching/inversion for native XML patches - autoconf support for this very experimental feature (nothing should break if you do not --enable-xml) - XML patches are fully abstract to Darcs limitations and issues - XML files in _darcs/current are equivalent to those in the actual repo (but not necessarily equal!) - XML patches are only applicable to XML files, no other patches should be applied to XML files - XML files remain XML files forever (i.e., no darcs mv foo.xml foo.txt), although this is not enforced at the moment so this can indeed fail: hunk patch A xml patch B invert (xml patch B) invert (hunk patch A) -- this is not necessarily applicable! A solution could be to convert an XML file to some canonical form first and to create an appropriate hunk patch. - XyDiff reads the DTD of an XML file from the reference within the XML file in order to improve speed and to check the result of a patch application. I am trying to find a way to provide the DTD to XyDiff separately ... - XML patches do not commute nor do they coalesce at the moment Here we would need to go deeper into the internal patch format of XyDiff. Since XML Patches are essentially abstrace FilePatches this only affects patches to the same XML file. That's it for the moment. Any critics/comments/suggestions/remarks/ideas/helps are most welcome! Does someone like some patches to discuss more technical stuff? Should some non-breaking (of course) patches go into darcs-unstable? Cheers, Jan _______________________________________________ darcs-devel mailing list [email protected] http://www.abridgegame.org/cgi-bin/mailman/listinfo/darcs-devel
