cleverdiff

A tool for describing multiple differences in files.


Keywords
aggregation, diff, difference
Licenses
GPL-3.0/GPL-3.0+
Install
pip install cleverdiff==0.3

Documentation

CleverDiff

Build Status

A tool for describing multiple differences in files.

Why?

If you have to compare files which contain multiple differences that are the same, you will know how tedious it is to step through every single hunk of the standard diff output. CleverDiff will show you each unique diff hunk once, then give you a summary of where else it has found the difference across multiple files.

Installation

CleverDiff is available on PyPI:

pip install --user cleverdiff

Usage

Run the cleverdiff.py script, with each pair of files separated with = as arguments:

python3 cleverdiff.py test_data/ref1.def=test_data/new1.def test_data/ref2.def=test_data/new2.def

Or run the cleverdiff.py script, with --old followed by a list of reference files and --new followed by a list of modified files:

python3 cleverdiff.py --old test_data/ref.def test_data/ref2.def \
                      --new test_data/new.def test_data/new2.def

CleverDiff will find the differences between each pair of files, then determine which are identical across all files, and give you a summary:

--------------------------------------------
DIFF   0:
insert in ref.def:49 vs new.def:50:
+        edit FOO bar

This difference is replicated elsewhere:
 * with identical diff in different files:
    ref2.def:49 vs new2.def:50


--------------------------------------------
DIFF   1:
change in ref.def:339 vs new.def:340:
-              family sat_172
-                edit WMOID '172'
+              family sat_173
+                edit WMOID '173'

This difference is replicated elsewhere:
 * with identical diff in different files:
    ref2.def:339 vs new2.def:340
 * with same diff but different line numbers:
    ref.def:376 vs new.def:377
    ref.def:413 vs new.def:414
    ref.def:450 vs new.def:451
    ref.def:487 vs new.def:488
    ref2.def:376 vs new2.def:377
    ref2.def:413 vs new2.def:414
    ref2.def:450 vs new2.def:451
    ref2.def:487 vs new2.def:488

Version history

v0.3

Contributors: @vhsw

  • Add command-line arguments --old and --new (#7)
  • Add black, isort & pyflakes to CI tests (#4)

v0.2

Contributors: @andrewcbennett Introduces ecFlow context (#2). Bug fixes.

v0.1.2

Contributors: @andrewcbennett (with thanks to @takluyver) Fixes failing tests. Adds Travis CI config.

v0.1

Contributors: @andrewcbennett (with thanks to @takluyver) initial version