Skip to main content

in-depth comparison of files, archives, and directories

Project description

diffoscope

https://badge.fury.io/py/diffoscope.svg

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 was initially started by the “reproducible builds” Debian project and now being developed as part of the (wider) “Reproducible Builds” initiative. It is meant to be able to quickly understand why two builds of the same package produce different outputs. diffoscope was previously named debbindiff.

See the COMMAND-LINE EXAMPLES section further below to get you started, as well as more detailed explanations of all the command-line options. The same information is also available in /usr/share/doc/diffoscope/README.rst or similar.

Exit status

Exit status is 0 if inputs are the same, 1 if different, 2 if trouble.

Command-line examples

To compare two files in-depth and produce an HTML report, run something like:

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

diffoscope will exit with 0 if there’s no differences and 1 if there are.

To get all possible options, run:

$ bin/diffoscope --help

If you have enough RAM, you can improve performance by running:

$ TMPDIR=/run/shm bin/diffoscope very-big-input-0/ very-big-input-1/

By default this allowed to use up half of RAM; for more add something like:

tmpfs   /run/shm    tmpfs   size=80%    0   0

to your /etc/fstab; see man mount for details.

External dependencies

diffoscope requires Python 3 and the following modules available on PyPI: libarchive-c, python-magic.

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

$ bin/diffoscope --list-tools

Contributors

Lunar, Reiner Herrmann, Chris Lamb, Mattia Rizzolo, Ximin Luo, Helmut Grohne, Holger Levsen, Daniel Kahn Gillmor, Paul Gevers, Peter De Wachter, Yasushi SHOJI, Clemens Lang, Ed Maste, Joachim Breitner, Mike McQuaid. Baptiste Daroussin, Levente Polyak.

Contact

The preferred way to report bugs about diffoscope, as well as suggest fixes and requests for improvements is to submit reports to the issue tracker at:

https://salsa.debian.org/reproducible-builds/diffoscope/issues

For more instructions, see CONTRIBUTING.rst in this directory.

Join the users and developers mailing-list: <https://lists.reproducible-builds.org/listinfo/diffoscope>

diffoscope website is at <https://diffoscope.org/>

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 <https://www.gnu.org/licenses/>.

See also

  • <https://diffoscope.org/>

  • <https://wiki.debian.org/ReproducibleBuilds>

Project details


Release history Release notifications | RSS feed

This version

268

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

diffoscope-268.tar.gz (3.3 MB view details)

Uploaded Source

File details

Details for the file diffoscope-268.tar.gz.

File metadata

  • Download URL: diffoscope-268.tar.gz
  • Upload date:
  • Size: 3.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.0.0 CPython/3.11.9

File hashes

Hashes for diffoscope-268.tar.gz
Algorithm Hash digest
SHA256 6d4105eae8c3b1f03a4a211bbc495689f45934241f0257744fee666ddc2691f9
MD5 344978a2ecdb7511a00a539e8ee4a1d3
BLAKE2b-256 1e01d3167b950a7176052b56bc0453bd4f15b80096e5d250f00b15904ca5ed11

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page