Oven logo

Oven

icdiff2.0.7

Published

improved colored diff

pip install icdiff

Package Downloads

Weekly DownloadsMonthly Downloads

Project URLs

Requires Python

Dependencies

    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.