From: Toby White <tow21@cam.ac.uk>
To: Jeff King <peff@peff.net>
Cc: git@vger.kernel.org, Wincent Colaiuta <win@wincent.com>
Subject: Re: Using Filemerge.app as a git-diff viewer
Date: Wed, 21 Nov 2007 13:10:47 +0000 [thread overview]
Message-ID: <47442E57.8010004@cam.ac.uk> (raw)
In-Reply-To: <20071121112757.GA17231@sigill.intra.peff.net>
Jeff King wrote:
> Have you looked at the documentation for GIT_EXTERNAL_DIFF (try git(7))?
> I think it is a cleaner way of doing what you want (although I think you
> will get each file diffed individually, which is perhaps not what you
> want).
>
> Something like:
>
> $ cat >merge.sh <<EOF
> #!/bin/sh
> opendiff "$1" "$2"
> EOF
> $ GIT_EXTERNAL_DIFF=./merge.sh git-diff ...
I hadn't seen that, no, but that's not quite right.
(Wincent pointed out its flaws better than me. Basically,
opendiff is not really diff-like enough.)
And in any case, that launches Filemerge repeatedly
on every file separately, which makes reviewing a large diff
time-consuming and not very helpful.
> write-tree? Yikes. If you want to diff against the working tree, then do
> that. If you want to diff against the index, then you probably want to
> git-checkout-index to a tmpdir, and diff against that.
Am I misunderstanding the documentation? From man git-write-tree
"Conceptually, git-write-tree sync()s the current index contents into a
set of tree files. In order to have that match what is actually in your
directory right now, you need to have done a git-update-index phase
before you did the git-write-tree."
So git-write-tree precisely does give you the index not the working tree,
by my reading.
>> git-archive --format=tar $OLD | (cd $TMPDIR1; tar xf -)
>
> Again, this could be simpler and faster by using git-checkout-index
> (preceded by git-read-tree into a temp index, if you are comparing
> against a tree).
Erm, ok, this is rapidly approaching the limit of my git knowledge,
but while I can see git-read-tree will write a tree-ish into a temp
index,
(so presumably
git-read-tree --index-output=$TMPFILE <commit>
ought to work. Except it doesn't, I get the error message
fatal: unable to write new index file
),
I can't see how to make git-checkout-index read from a temp index.
And I'm assuming I don't want to go stomping all over the current
index just in order to do a diff, which shouldn't change the state
of my repository.
Is there a canonical way to checkout a given commit object into
a fresh directory?
--
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
next prev parent reply other threads:[~2007-11-21 13:11 UTC|newest]
Thread overview: 9+ messages / expand[flat|nested] mbox.gz Atom feed top
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 [this message]
2007-11-21 13:28 ` Wincent Colaiuta
2007-11-21 14:36 ` Jeff King
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=47442E57.8010004@cam.ac.uk \
--to=tow21@cam.ac.uk \
--cc=git@vger.kernel.org \
--cc=peff@peff.net \
--cc=win@wincent.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.