diffoscope
==========

diffoscope will try to get to the bottom of what makes files or
directories different. It will recursively unpack archives of many kinds
and transform various binary formats into more human readable form to
compare them. It can compare two tarballs, ISO images, or PDF just as
easily.

It can be scripted through error codes, and a report can be produced
with the detected differences. The report can be text or HTML.
When no type of report has been selected, diffoscope defaults
to write a text report on the standard output.

diffoscope will exit with 0 if there's no differences and 1 if there
are. An HTML report can be produced with the detected differences.

diffoscope is developed as part of the “reproducible builds” Debian
project: <https://wiki.debian.org/ReproducibleBuilds>
It is meant to be able to quickly understand why two builds of the same
package produce different outputs. diffoscope was previously named
debbindiff.

Example
-------

    $ bin/diffoscope.py --html output.html build1.changes build2.changes

This will compare `build1.changes` and `build2.changes` and create
`output.html` if there are differences between the two files.

External dependencies
---------------------

Required Python modules:

 * Available on PyPI: libarchive-c, python-debian.
 * Magic-file-extension is built from file:
   http://www.darwinsys.com/file/
   Available on Debian and Fedora as python-magic.
 * rpm-python is built from rpm:
   http://rpm.org/
   Available on Debian and Fedora as python-rpm.
 * tlsh is available at:
   https://github.com/trendmicro/tlsh

The various comparators rely on external commands being available. To
get a list of them, please run:

    $ bin/diffoscope.py --list-tools

Contributors
------------

Lunar, Reiner Herrmann, Chris Lamb, Helmut Grohne, Holger Levsen,
Yasushi SHOJI, Daniel Kahn Gillmor, Peter De Wachter.

License
-------

diffoscope is free software: you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation, either version 3 of the License, or
(at your option) any later version.

diffoscope is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
GNU General Public License for more details.

You should have received a copy of the GNU General Public License
along with diffoscope.  If not, see <http://www.gnu.org/licenses/>.
