Subversion diff commands

Subversion allows to use a custom command for displaying diffs using svn diff --diff-cmd <cmd>. I have been using diff-cmd=colordiff in my ~/.subversion/config for quite some time now. This is really useful, but occasionally I would also like to use vimdiff to get a nice side-by-side diff.

Although this sounds quite easy at first, there are some hurdles. Subversion expects the given command to adhere to the GNU diff parameters, that means it expects it to understand and parse the labels it passes before the actual filenames. This works fine for colordiff, but not vimdiff which only wants the old and new filenames.

For a better diff experience with svn, I set up the following shell function which let’s me choose the program I want to use for diffing.

First, I need a new wrapper script at ~/libexec/svndiff which takes the actual diff program as first option, ignores the GNU diff labels and calls that program passing old and new filename.

#!/bin/bash
BIN=$1
shift 5
$BIN "$@"

Then I define this shell alias in my ~/.bashrc to extend the functionality of the svn command:

function svn() {
    case "$1" in
        diff-plain)
            shift;
            `which svn` diff --diff-cmd diff $@
            ;;
        diff-color)
            shift;
            `which svn` diff --diff-cmd colordiff $@
            ;;
        diff-vim)
            shift;
            `which svn` diff --diff-cmd $HOME/libexec/svndiff -x vimdiff $@
            ;;
        diff-filemerge)
            shift;
            `which svn` diff --diff-cmd $HOME/libexec/svndiff -x opendiff $@
            ;;
        *)
            `which svn` $@
            ;;
    esac
}

Now I can choose the program I find best suited for the current task in a very simplified manner, for example svn diff-vim -c1337.

X-Chat Aqua for Mac OS X

X-Chat Aqua is a very nice IRC client for Mac OS X, but the latest version for download on their website is way out of date and a few years old.

X-Chat Aqua screenshot

X-Chat Aqua screenshot

A while ago libc volunteered to import the old CVS into a new SVN repository and started development on it again. So the version in SVN is now based on xchat 2.8.x, but there are still no binaries available.

Therefore I just put together my own build and I am also offering it as a download for everyone. The application bundle contains an Universal binary for both PowerPC and x86, while I was only able to test them on Leopard.

Additionally, I also replaced the default X-Chat icon with a modern one provided by Ryan Fernandez.

Download X-Chat Aqua: xchataqua-2009-01-21.tar.gz

Welcome to my personal blog

I still don’t have a really good idea what to blog about, but let’s see how it will turn out 🙂

I plan to blog mainly in english, but as my native language is german, I might switch to that from time to time. I am going to categorize posts accordingly whether they are in English or German, so you can easily only get those posts that matter for you. Subscribing to the English or German RSS feed from categories should be enough.

Happy blogging!