Re: git difftool and proper path escaping on windows
- From
David Aguilar <davvid@gmail.com>
- Date
- May 10, 2015, 20:15 UTC
- Message-ID
- <F14B985A-C968-445A-A3F7-10AE425E7029@gmail.com>
- In-Reply-To
- <554CF2D9.3050608@gmail.com>
On May 8, 2015 10:31:05 AM PDT, Phil Susi <phillsusi@gmail.com> wrote:
Show 30 quoted lines
>I'm trying to have git difftool run winmerge to compare files, but it
>seems to be doing something silly with path translation. My first
>attempt was:
>
>git difftool -x /c/Program\ Files\ \(x86\)/WinMerge/WinMergeU.exe
>
>To which it responded:
>
>C:\Users\psusi\AppData\Local\Programs\Git/libexec/git-core\git-difftool--helper:
> eval: line 61: syntax error near unexpected token `('
>
>C:\Users\psusi\AppData\Local\Programs\Git/libexec/git-core\git-difftool--helper:
>eval: line 61: `c:/Program Files (x86)/WinMerge/WinMergeU.exe "$LOCAL"
>"$REMOTE
>
>
>My first thought was that my shell removed the backslash escapes and
>then git tried to pass the remaining command to another shell. So I
>wrapped the path in single quotes, which should pass the escapes to
>git,
>which should pass them to the shell, which should then be able to parse
>
>the spaces in parenthesis in the path, but instead I got this:
>
>Launch 'c:/Program/ Files/ /(x86/)/WinMerge/WinMergeU.exe'
>
>So it appears that git is replacing backslashes with forward slashes,
>then trying to pass that to the shell, which doesn't work. Any idea
>how
>to fix or workaround this bug?paths and executing external programs on windows is confusing and error-prone for a simple unix user such as myself.
I think you might be able to work around the difficulties by making the tool available in your $PATH, that way you don't have to play shell quoting / escaping games.
I hope that helps. if you discover a different solution, I'd be happy to document it so that windows users don't have to rediscover how to do it in the future.
let me know how it goes. cheers
-- David