From: John Keeping <john@keeping.me.uk>
To: Matt McClure <matthewlmcclure@gmail.com>
Cc: David Aguilar <davvid@gmail.com>,
"git@vger.kernel.org" <git@vger.kernel.org>,
Tim Henigan <tim.henigan@gmail.com>
Subject: Re: [PATCH] difftool: Make directory diff symlink work tree
Date: Tue, 12 Mar 2013 19:24:59 +0000 [thread overview]
Message-ID: <20130312192459.GD2317@serenity.lan> (raw)
In-Reply-To: <20130312190956.GC2317@serenity.lan>
> difftool -d formerly knew how to symlink to the work tree when the work
> tree contains uncommitted changes. In practice, prior to this change, it
> would not symlink to the work tree in case there were no uncommitted
> changes, even when the user invoked difftool with the form:
>
> git difftool -d [--options] <commit> [--] [<path>...]
> This form is to view the changes you have in your working tree
> relative to the named <commit>. You can use HEAD to compare it
> with the latest commit, or a branch name to compare with the tip
> of a different branch.
>
> Instead, prior to this change, difftool would use the file's HEAD blob
> sha1 to find its content rather than the work tree content. This change
> teaches `git diff --raw` to emit the null SHA1 for consumption by
> difftool -d, so that difftool -d will use a symlink rather than a copy
> of the file.
>
> Before:
>
> $ git diff --raw HEAD^ -- diff-lib.c
> :100644 100644 f35de0f... ead9399... M diff-lib.c
>
> After:
>
> $ ./git diff --raw HEAD^ -- diff-lib.c
> :100644 100644 f35de0f... 0000000... M diff-lib.c
When I tried this I got the expected behaviour even without this patch.
It turns out that an uncommitted, but *staged* change emits the SHA1 of
the blob rather than the null SHA1. Do you get the desired behaviour if
you "git reset" before using difftool?
If so I think you want some new mode of operation for difftool instead
of this patch which will also affect unrelated commands.
> ---
> diff-lib.c | 4 ++++
> 1 file changed, 4 insertions(+)
>
> diff --git a/diff-lib.c b/diff-lib.c
> index f35de0f..ead9399 100644
> --- a/diff-lib.c
> +++ b/diff-lib.c
> @@ -319,6 +319,10 @@ static int show_modified(struct rev_info *revs,
> return -1;
> }
>
> + if (!cached && hashcmp(old->sha1, new->sha1)) {
> + sha1 = null_sha1;
> + }
> +
> if (revs->combine_merges && !cached &&
> (hashcmp(sha1, old->sha1) || hashcmp(old->sha1, new->sha1))) {
> struct combine_diff_path *p;
> --
> 1.8.2.rc2.4.g7799588
>
next prev parent reply other threads:[~2013-03-12 19:25 UTC|newest]
Thread overview: 50+ messages / expand[flat|nested] mbox.gz Atom feed top
2012-11-26 20:23 difftool -d symlinks, under what conditions Matt McClure
2012-11-27 6:20 ` David Aguilar
2012-11-27 21:10 ` Matt McClure
[not found] ` <CAJELnLEL8y0G3MBGkW+YDKtVxX4n4axJG7p0oPsXsV4_FRyGDg@mail.gmail.com>
2013-03-12 18:12 ` Matt McClure
2013-03-12 19:09 ` John Keeping
2013-03-12 19:23 ` David Aguilar
2013-03-12 19:43 ` John Keeping
2013-03-12 20:39 ` Junio C Hamano
2013-03-12 21:06 ` John Keeping
2013-03-12 21:26 ` Junio C Hamano
2013-03-12 21:43 ` Matt McClure
2013-03-12 22:11 ` Matt McClure
2013-03-12 22:16 ` Junio C Hamano
2013-03-12 22:48 ` Matt McClure
2013-03-13 0:17 ` John Keeping
2013-03-13 0:56 ` Matt McClure
2013-03-13 8:24 ` David Aguilar
2013-03-13 15:30 ` Junio C Hamano
2013-03-13 16:45 ` Junio C Hamano
2013-03-13 17:08 ` John Keeping
2013-03-13 17:40 ` Junio C Hamano
2013-03-13 18:01 ` John Keeping
2013-03-13 19:28 ` Junio C Hamano
2013-03-13 20:33 ` [PATCH 0/2] difftool --dir-diff: symlink all files matching the working tree John Keeping
2013-03-13 20:33 ` [PATCH 1/2] git-difftool(1): fix formatting of --symlink description John Keeping
2013-03-13 20:33 ` [PATCH 2/2] difftool --dir-diff: symlink all files matching the working tree John Keeping
2013-03-14 3:41 ` David Aguilar
2013-03-14 9:36 ` John Keeping
2013-03-14 15:18 ` Junio C Hamano
2013-03-14 20:19 ` [PATCH v2 0/3] " John Keeping
2013-03-14 20:19 ` [PATCH v2 1/3] git-difftool(1): fix formatting of --symlink description John Keeping
2013-03-14 20:19 ` [PATCH v2 2/3] difftool: avoid double slashes in symlink targets John Keeping
2013-03-14 21:19 ` Junio C Hamano
2013-03-14 20:19 ` [PATCH v2 3/3] difftool --dir-diff: symlink all files matching the working tree John Keeping
2013-03-14 21:28 ` Junio C Hamano
2013-03-14 22:24 ` John Keeping
2013-03-14 22:31 ` Junio C Hamano
2013-03-14 9:43 ` difftool -d symlinks, under what conditions John Keeping
2013-03-14 17:25 ` John Keeping
2013-03-14 17:33 ` Junio C Hamano
2013-03-14 20:00 ` [PATCH 0/2] checkout-index: fix .gitattributes handling with --prefix John Keeping
2013-03-14 20:00 ` [PATCH 1/2] t2003: modernize style John Keeping
2013-03-14 20:00 ` [PATCH 2/2] entry: fix filter lookup John Keeping
2013-03-14 21:50 ` Junio C Hamano
2013-03-12 20:38 ` difftool -d symlinks, under what conditions Junio C Hamano
2013-03-12 19:24 ` John Keeping [this message]
2013-03-12 23:12 ` [PATCH] difftool: Make directory diff symlink work tree Matt McClure
2013-03-12 23:40 ` John Keeping
2013-03-13 0:26 ` Matt McClure
2013-03-13 9:11 ` John Keeping
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
List information: http://vger.kernel.org/majordomo-info.html
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20130312192459.GD2317@serenity.lan \
--to=john@keeping.me.uk \
--cc=davvid@gmail.com \
--cc=git@vger.kernel.org \
--cc=matthewlmcclure@gmail.com \
--cc=tim.henigan@gmail.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.
Code repositories for project(s) associated with this public inbox
https://80x24.org/mirrors/git.git
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 read-only IMAP folder(s) and NNTP newsgroup(s).