I've been doing some collaborative hacking on a paper. This makes git's git diff --color-words option very useful. Getting git's repository viewer, gitk, to use this option was not easy, and the result is not terribly satisfying given the poor integration. But, it is functional and a lot easier to use then manually copying SHA1 IDs.

After poking around gitk's menus, I saw it can use an external diff program. Unfortunately, this is only used when right clicking on a file in the bottom-right panel and selecting external diff; it is not used for generating the diffs in the lower-left panel. Further, gitk does not actually use the output from this program: it expects the extral program to show the output itself; git diff just sends the output to stdout. The following program works around these limitations: it launches git diff in an xterm and sends the output to less:


# git diff will happy work on files.  If you do not run it from a
# directory managed by git.
cd /

xterm -e bash -c "git diff --color-words -- \"$D/$1\" \"$D/$2\" | less -R"