git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Using Filemerge.app as a git-diff viewer
@ 2007-11-21 10:31 Toby White
  2007-11-21 11:20 ` Jonathan del Strother
  2007-11-21 11:27 ` Jeff King
  0 siblings, 2 replies; 9+ messages in thread
From: Toby White @ 2007-11-21 10:31 UTC (permalink / raw)
  To: git; +Cc: Wincent Colaiuta

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

^ permalink raw reply	[flat|nested] 9+ messages in thread

end of thread, other threads:[~2007-11-21 14:37 UTC | newest]

Thread overview: 9+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2007-11-21 10:31 Using Filemerge.app as a git-diff viewer Toby White
2007-11-21 11:20 ` Jonathan del Strother
2007-11-21 11:27 ` Jeff King
2007-11-21 12:59   ` Wincent Colaiuta
2007-11-21 13:04     ` Jeff King
2007-11-21 13:58     ` Jakub Narebski
2007-11-21 13:10   ` Toby White
2007-11-21 13:28     ` Wincent Colaiuta
2007-11-21 14:36     ` Jeff King

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).