Subject: Re: git difftool does does not respect current working directory

From: Frédéric Heitzmann <[email-masked]>
Date: Sat, 21 May 2011 11:35:06 +0200

Reading your replies, my understanding is :
- difftool is consistent with diff, and chdir to root directory. It is 
seems indeed very common to have diffs showing from the root directory.
- on the overhand, openning gvimdiff via difftool and having a new cwd 
is for sure not consistent with usual gvim text editing.

I am afraid I am going to need some gvim trick like :
$ git difftool -x "gvimdiff -f -d -c 'wincmd l' -c 'cd $PWD' " my_file

Not sure that it is less messy though ;-)
If there is no stronger need to adapt git-difftool, for gvimdiff or any 
other difftool, we could probably settle for it.

Thanks for you help.
--
Fred

Le 20/05/2011 06:48, David Aguilar a écrit :
> On Thu, May 19, 2011 at 09:31:54PM -0700, Junio C Hamano wrote:
>> David Aguilar<[email-masked]>  writes:
>>
>>> We would have to change the way $GIT_EXTERNAL_DIFF works so
>>> that it preserves the current directory and constructs
>>> paths relative to it.  Patches welcome :-)
>> I am afraild that would break a lot more than difftool.
>>
>> If we really wanted to change the behaviour, the external diff interface
>> needs to export the value of prefix (i.e. what the original subdirectory
>> was), and the script that is spawned as $GIT_EXTERNAL_DIFF (optionally
>> optionally) take it into account, perhaps by cd'ing back to that
>> subdirectory and possibly moving or renaming the temporary files to suit
>> its needs (I think recently we also saw a request to rename the temporary
>> files).
>>
>> Or something like that.
> Yup, yup.  That's a lot of machinery for a relatively small
> gain.  Simple is simple, simple is good.  Thanks for
> outlining how someone could implement it, though.
>
> I won't do it myself but if someone is motivated enough then
> your email at least gives an idea about how to go about doing
> it.  git-difftool--helper could chdir to $prefix and diff each
> file with $(git rev-parse --show-cdup)/$path as the path since
> it may no longer be at the root.
>
> This seems very messy so I don't really want to sound too
> encouraging about going down this route.  I probably
> shouldn't have encouraged looking at the temporary files
> thing in the other thread either.
>
> Thanks,