Giter Site home page Giter Site logo

fuego-diff's Introduction

Fuego Diff -- A structural XML diff and patch library

Fuego Diff is a tool and library for calculating the differences between two XML documents (a bit like the diff tool does for text files), and for applying edits to a document (like the patch tool). It can thus be used e.g. for three-way merging between documents modified by different people.

Feature highlights:

  • Structural diff based on XML semantics (attribute order does not matter, child element order does matter)
  • Detects movement of subtrees from one part of the document to another
  • Supports Unicode and XML Namespaces
  • Implemented in pure Java

This library was originally developed at the Helsinki Open Source Laboratory (HOSLAB) at the University of Helsinki, under the name Fuego Core XML Diff and Patch Tool. The project was forked by Martin Kleppmann in February 2009, to continue development under the new name Fuego Diff. The underlying algorithms have been described in T. Lindholm, J. Kangasharju, and S. Tarkoma: Fast and Simple XML Tree Differencing by Sequence Alignment, Proceedings of ACM DocEng 2006 (official version of the paper at acm.org).

Installation

Fuego Diff is currently available only in source form. You can download the source from GitHub:

...or you can clone the git repository by typing:

git clone git://github.com/ept/fuego-diff.git

Next, go into the directory and download the project's dependencies by typing:

ant -f project-setup.xml

Then you can build the project simply by typing:

ant

You can see it in operation by giving it two XML files, file1.xml and file2.xml for example, and writing the diff to a file called diff.xml:

ant -Dbase=file1.xml -Dnew=file2.xml -Ddiff=diff.xml diff

And to apply the patch diff.xml to file1.xml, writing the result to new.xml, try this:

ant -Dbase=file1.xml -Ddiff=diff.xml -Dnew=new.xml patch

Development status

Fuego Diff is currently being refactored significantly, and the patch format or behaviour may change at any time. Feel free to use it and send me comments, bug reports, patches or pull requests. However I wouldn't recommend putting it to production use just yet. Hopefully soon.

You can contact me by email: martin at eptcomputing dot com.

Copyright

Copyright 2005--2008 Helsinki Institute for Information Technology.

Copyright 2009 Martin Kleppmann.

Fuego Diff is free software; you can redistribute it and/or modify it under the terms of the MIT license. See the file MIT-LICENSE in the source distribution for details.

fuego-diff's People

Contributors

ept avatar gioele avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar

fuego-diff's Issues

Error fetching dependencies

The download URL is no longer available.
It seems to have moved to github.

      [get] Getting: http://switch.dl.sourceforge.net/sourceforge/junit/junit3.8.1.zip
      [get] To: /tmp/ept--fuego-diff/wget-1970677734
      [get] Error getting http://switch.dl.sourceforge.net/sourceforge/junit/junit3.8.1.zip to //tmp/ept--fuego-diff/wget-1970677734

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.