git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: git difftool does does not respect current working directory

From
FHFrédéric Heitzmann <frederic.heitzmann@gmail.com>
Date
May 21, 2011, 09:35 UTC
Message-ID
<4DD7874A.2050604@gmail.com>
In-Reply-To
<20110520044851.GD13582@gmail.com>
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 :
Show 33 quoted lines
> On Thu, May 19, 2011 at 09:31:54PM -0700, Junio C Hamano wrote:
>> David Aguilar<davvid@gmail.com>  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,
Previous: David AguilarNext: David Aguilar
Message 7 of 21 in “git difftool does does not respect current working directory”
  1. Frédéric HeitzmannMay 14, 2011
  2. Junio C HamanoMay 16, 2011
  3. David AguilarMay 20, 2011
  4. David AguilarMay 20, 2011
  5. Junio C HamanoMay 20, 2011
  6. David AguilarMay 20, 2011
  7. Frédéric HeitzmannMay 21, 2011
  8. David AguilarMay 22, 2011
  9. Junio C HamanoMay 22, 2011
  10. David AguilarMay 22, 2011
  11. 1/3 setup: Provide GIT_PREFIX to built-insDavid Aguilar, May 22, 2011
  12. 2/3 git: Remove handling for GIT_PREFIXDavid Aguilar, May 22, 2011
  13. 3/3 git-mergetool--lib: Make vimdiff retain the current directoryDavid Aguilar, May 22, 2011
  14. Michael J GruberMay 23, 2011
  15. Junio C HamanoMay 23, 2011
  16. Ævar Arnfjörð BjarmasonMay 23, 2011
  17. David AguilarMay 25, 2011
  18. David AguilarMay 23, 2011
  19. Michael J GruberMay 23, 2011
  20. Junio C HamanoMay 23, 2011
  21. Michael J GruberMay 24, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.