diff(1) all your configs
Python
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
test
.gitignore
.travis.yml
LICENSE
MANIFEST.in
README.md add buid status to readme Feb 20, 2014
cfgdiff
cfgdiff.1 add initial version of the manpage Feb 21, 2014
cfgdiff.py
requirements-python2.txt
requirements-python3.txt
requirements.txt fuck you dnspython May 1, 2014
setup.py

README.md

cfgdiff -- diff(1) all your configuration files

Build Status

Why?

Ever tried comparing MySQL's my.cnf from a Debian and a Gentoo machine with diff(1) without going crazy?

diff(1) is an awesome tool, you use it (or similar implementations like git diff, svn diff etc) every day when dealing with code. But configuration files aren't code. Indentation often does not matter (yeah, there is diff -w and yeah, people use YAML for configs), order of settings does not matter and comments are just beautiful noise.

How?

cfgdiff will try to parse your configuration files, fetching all the relevant keys and values from them and then pretty-printing them in the original format. These results are then diffed and the diff is shown to you.

What?

cfgdiff currently supports the following formats:

  • INI using Python's ConfigParser library
  • JSON using Python's JSON library
  • YAML if the Python YAML library is installed
  • XML if the Python lxml library is installed