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

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