Matthew Wang 8d9d883e63 Use symlink for #issue 1 as distutils does not support entry_points 11 years ago
img document update; images 11 years ago
src Use symlink for #issue 1 as distutils does not support entry_points 11 years ago
tests Document/usage/dogfood test update after merge for issue #4 (Revision control support); more robust on parsing strange diff 11 years ago
.gitignore New setup.py and document/make targets update for issue #1 11 years ago
LICENSE Use formal email addr, I will be spammed anyway 11 years ago
Makefile New setup.py and document/make targets update for issue #1 11 years ago
README.md New setup.py and document/make targets update for issue #1 11 years ago
setup.py Use symlink for #issue 1 as distutils does not support entry_points 11 years ago

README.md

About

View incremental, colored diff in unified format or side by side with auto pager. Requires python (>= 2.5.0) and less.

Default Side by side

Installation

Cdiff is not in PyPI yet, so far you could download the script directly or use the setup.py to install.

Download directly

Save src/cdiff.py to whatever directory which is in your $PATH, for example, $HOME/bin is in my $PATH, so I save the script there and name as cdiff.

curl -ksS https://raw.github.com/ymattw/cdiff/master/src/cdiff.py > ~/bin/cdiff
chmod +x ~/bin/cdiff

Install with the setup.py

You can run the setup.py from the source to install cdiff to system wide directory.

git clone https://github.com/ymattw/cdiff.git
cd cdiff
sudo ./setup.py install

This usually installs it as /usr/local/bin/cdiff.

Usage

Cdiff reads diff from diff (patch) file if given, or stdin if redirected, or diff produced by revision tool if in a git/svn/hg workspace. Use option -s to enable side by side view, and option -w N to set a text width other than default 80. See examples below.

Show usage:

cdiff -h

View a diff (patch) file:

cdiff foo.patch             # view incremental, colored udiff
cdiff foo.patch -s          # view side by side
cdiff foo.patch -s -w 90    # use text width 90 other than default 80

Read diff from local modification in a svn, git, or hg workspace:

cd proj-workspace
cdiff
cdiff -s
cdiff -s -w 90

Pipe in a diff:

svn diff -r PREV | cdiff -s
git log -p -2 | cdiff -s
git show <commit> | cdiff -s

Redirect output to another patch file is safe:

svn diff | cdiff -s > my.patch

Known issue

  • Only support unified format for input diff
  • Side by side mode has alignment problem for wide chars