login
Header Space

 
 

Using Filemerge.app as a git-diff viewer

Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]
To: <git@...>
Cc: Wincent Colaiuta <win@...>
Date: Wednesday, November 21, 2007 - 6:31 am

Mac OS X bundles a rather nice graphical diff viewer (Filemerge.app)
with its developer tools.

While git-merge knows how to use this as a merge tool, I couldn't
find any way to easily use Filemerge as a viewer for the output
of git-diff.

(http://thread.gmane.org/gmane.comp.version-control.git/58702
discusses the problem, and recommends piping git-diff into kompare.
Filemerge unfortunately won't accept diff output on stdin)

So I wrote a quick script (below) which does what I need. Of all
the available git-diff flags, it only understands "--cached", and
up to two commit objects, and no paths, but that's enough for me.
Within those constraints, it has the same semantics as git-diff.

It's not very nice, but in case anyone else wants this:

#!/bin/sh
#
# Filemerge.app must not already be open before running
# this script, or opendiff below will return immediately,
# and the TMPDIRs deleted before it gets the chance to read
# them.

if test $# = 0; then
   OLD=`git-write-tree`
elif test "$1" = --cached; then
   OLD=HEAD
   NEW=`git-write-tree`
   shift
fi
if test $# -gt 0; then
   OLD="$1"; shift
fi
test $# -gt 0 && test -z "$CACHED" && NEW="$1"

TMPDIR1=`mktemp -d`
git-archive --format=tar $OLD | (cd $TMPDIR1; tar xf -)
if test -z "$NEW"; then
   TMPDIR2=$(git rev-parse --show-cdup)
   test -z "$cdup" && TMPDIR2=.
else
   TMPDIR2=`mktemp -d`
   git-archive --format=tar $NEW | (cd $TMPDIR2; tar xf -)
fi

opendiff $TMPDIR1 $TMPDIR2 | cat
rm -rf $TMPDIR1
test ! -z "$NEW" && rm -rf $TMPDIR2

-- 
Dr. Toby O. H. White
Dept. Earth Sciences,
Downing Street,
Cambridge CB2 3EQ
United Kingdom

Tel: +44 1223 333464
Fax: +44 1223 333450
Web: http://uszla.me.uk
-
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Previous message: [thread] [date] [author]
Next message: [thread] [date] [author]

Messages in current thread:
Using Filemerge.app as a git-diff viewer, Toby White, (Wed Nov 21, 6:31 am)
Re: Using Filemerge.app as a git-diff viewer, Jeff King, (Wed Nov 21, 7:27 am)
Re: Using Filemerge.app as a git-diff viewer, Toby White, (Wed Nov 21, 9:10 am)
Re: Using Filemerge.app as a git-diff viewer, Jeff King, (Wed Nov 21, 10:36 am)
Re: Using Filemerge.app as a git-diff viewer, Wincent Colaiuta, (Wed Nov 21, 9:28 am)
Re: Using Filemerge.app as a git-diff viewer, Wincent Colaiuta, (Wed Nov 21, 8:59 am)
Re: Using Filemerge.app as a git-diff viewer, Jeff King, (Wed Nov 21, 9:04 am)
Re: Using Filemerge.app as a git-diff viewer, Jonathan del Strother, (Wed Nov 21, 7:20 am)
speck-geostationary