Skip to main content

improved colored diff

Project description

Icdiff

Improved colored diff

screenshot

Installation

Download the latest icdiff and put it on your PATH.

Alternatively, install with packaging tools:

# pip
pip install icdiff

# apt
sudo apt install icdiff

# homebrew
brew install icdiff

# aur
yay -S icdiff

# nix
nix-env -i icdiff

Usage

icdiff [options] left_file right_file

Show differences between files in a two column view.

Options

  --version             show program's version number and exit
  -h, --help            show this help message and exit
  --cols=COLS           specify the width of the screen. Autodetection is Unix
                        only
  --encoding=ENCODING   specify the file encoding; defaults to utf8
  -E MATCHER, --exclude-lines=MATCHER
                        Do not diff lines that match this regex. Not
                        compatible with the 'line-numbers' option
  --head=HEAD           consider only the first N lines of each file
  -H, --highlight       color by changing the background color instead of the
                        foreground color.  Very fast, ugly, displays all
                        changes
  -L LABELS, --label=LABELS
                        override file labels with arbitrary tags. Use twice,
                        one for each file
  -N, --line-numbers    generate output with line numbers. Not compatible with
                        the 'exclude-lines' option.
  --no-bold             use non-bold colors; recommended for solarized
  --no-headers          don't label the left and right sides with their file
                        names
  --output-encoding=OUTPUT_ENCODING
                        specify the output encoding; defaults to utf8
  -r, --recursive       recursively compare subdirectories
  -s, --report-identical-files
                        report when two files are the same
  --show-all-spaces     color all non-matching whitespace including that which
                        is not needed for drawing the eye to changes.  Slow,
                        ugly, displays all changes
  --tabsize=TABSIZE     tab stop spacing
  -t, --truncate        truncate long lines instead of wrapping them
  -u, --patch           generate patch. This is always true, and only exists
                        for compatibility
  -U NUM, --unified=NUM, --numlines=NUM
                        how many lines of context to print; can't be combined
                        with --whole-file
  -W, --whole-file      show the whole file instead of just changed lines and
                        context
  --strip-trailing-cr   strip any trailing carriage return at the end of an
                        input line
  --color-map=COLOR_MAP
                        choose which colors are used for which items. Default
                        is --color-map='add:green_bold,change:yellow_bold,desc
                        ription:blue,meta:magenta,separator:blue,subtract:red_
                        bold'.  You don't have to override all of them:
                        '--color-map=separator:white,description:cyan

Using with Git

To see what it looks like, try:

git difftool --extcmd icdiff

To install this as a tool you can use with Git, copy git-icdiff into your PATH and run:

git icdiff

You can configure git-icdiff in Git's config:

git config --global icdiff.options '--highlight --line-numbers'

Using with subversion

To try it out, run:

svn diff --diff-cmd icdiff

Using with Mercurial

Add the following to your ~/.hgrc:

[extensions]
extdiff=

[extdiff]
cmd.icdiff=icdiff
opts.icdiff=--recursive --line-numbers

Or check more in-depth setup instructions.

Setting up a dev environment

Create a virtualenv and install the dev dependencies. This is not needed for normal usage.

virtualenv venv
source venv/bin/activate
pip install -r requirements-dev.txt

Running tests

./test.sh python3

Making a release

  • Update ChangeLog with all the changes since the last release
  • Update __version__ in icdiff
  • Run tests, make sure they pass
  • git commit -a -m "release ${version}"
  • git push
  • git tag release-${version}
  • git push origin release-${version}
  • A GitHub Action should be triggered due to the release tag being pushed, and will upload to PyPI.

License

This file is derived from difflib.HtmlDiff which is under license. I release my changes here under the same license. This is GPL compatible.

Project details


Download files

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

Source Distribution

icdiff-2.0.7.tar.gz (16.4 kB view details)

Uploaded Source

Built Distribution

icdiff-2.0.7-py3-none-any.whl (17.0 kB view details)

Uploaded Python 3

File details

Details for the file icdiff-2.0.7.tar.gz.

File metadata

  • Download URL: icdiff-2.0.7.tar.gz
  • Upload date:
  • Size: 16.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for icdiff-2.0.7.tar.gz
Algorithm Hash digest
SHA256 f79a318891adbf59a45e3a7694f5e1f18c5407065264637072ac8363b759866f
MD5 01cbe900302f74adb16f1870e6e21e19
BLAKE2b-256 fae443341832be5f2bcae71eb3ef08a07aaef9b74f74fe0b3675f62bd12057fe

See more details on using hashes here.

File details

Details for the file icdiff-2.0.7-py3-none-any.whl.

File metadata

  • Download URL: icdiff-2.0.7-py3-none-any.whl
  • Upload date:
  • Size: 17.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.4

File hashes

Hashes for icdiff-2.0.7-py3-none-any.whl
Algorithm Hash digest
SHA256 f05d1b3623223dd1c70f7848da7d699de3d9a2550b902a8234d9026292fb5762
MD5 0a5c9d829f09150f48f4a975a7d7bb02
BLAKE2b-256 7c2ab3178baa75a3ec75a33588252296c82a1332d2b83cd01061539b74bde9dd

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