git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Error after calling git difftool -d with
@ 2016-12-02 12:15 P. Duijst
  2016-12-02 16:05 ` Johannes Schindelin
  0 siblings, 1 reply; 6+ messages in thread
From: P. Duijst @ 2016-12-02 12:15 UTC (permalink / raw)
  To: git

[-- Attachment #1: Type: text/plain, Size: 1059 bytes --]

Dear,

Incase filenames are used with a quote ' or a bracket [  (and maybe some 
more characters), git "diff" and "difftool -y" works fine, but git 
*difftool **-d* gives the next error message:

    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
    $ git diff
    diff --git a/Test ''inch.txt b/Test ''inch.txt
    index dbff793..41f3257 100644
    --- a/Test ''inch.txt
    +++ b/Test ''inch.txt
    @@ -1 +1,3 @@
    +
    +ddd
      Test error in simple repository
    warning: LF will be replaced by CRLF in Test ''inch.txt.
    The file will have its original line endings in your working directory.

    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
    *$ git difftool -d*
    *fatal: Cannot open '/d/Dev/test//Test ''inch.txt': No such file or
    directory*
    *hash-object /d/Dev/test//Test ''inch.txt: command returned error: 128*

    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
    $


This issue is inside V2.10.x and V2.11.0.
V2.9.0 is working correctly...

I am using git for windows and beyond compare 4.0 as difftool.

Best regards,

Peter

[-- Attachment #2: IssueWithFiles.zip --]
[-- Type: application/zip, Size: 13922 bytes --]

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Error after calling git difftool -d with
  2016-12-02 12:15 Error after calling git difftool -d with P. Duijst
@ 2016-12-02 16:05 ` Johannes Schindelin
  2016-12-05  5:15   ` David Aguilar
  0 siblings, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2016-12-02 16:05 UTC (permalink / raw)
  To: P. Duijst; +Cc: git

Hi Peter,

On Fri, 2 Dec 2016, P. Duijst wrote:

> Incase filenames are used with a quote ' or a bracket [  (and maybe some more
> characters), git "diff" and "difftool -y" works fine, but git *difftool **-d*
> gives the next error message:
> 
>    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
>    $ git diff
>    diff --git a/Test ''inch.txt b/Test ''inch.txt
>    index dbff793..41f3257 100644
>    --- a/Test ''inch.txt
>    +++ b/Test ''inch.txt
>    @@ -1 +1,3 @@
>    +
>    +ddd
>      Test error in simple repository
>    warning: LF will be replaced by CRLF in Test ''inch.txt.
>    The file will have its original line endings in your working directory.
> 
>    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
>    *$ git difftool -d*
>    *fatal: Cannot open '/d/Dev/test//Test ''inch.txt': No such file or
>    directory*
>    *hash-object /d/Dev/test//Test ''inch.txt: command returned error: 128*
> 
>    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
>    $
> 
> 
> This issue is inside V2.10.x and V2.11.0.
> V2.9.0 is working correctly...

You say v2.11.0, but did you also try the new, experimental builtin
difftool? You can test without reinstalling:

	git -c difftool.useBuiltin=true difftool -d ...

Ciao,
Johannes

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Error after calling git difftool -d with
  2016-12-02 16:05 ` Johannes Schindelin
@ 2016-12-05  5:15   ` David Aguilar
  2016-12-05  7:58     ` P. Duijst
  0 siblings, 1 reply; 6+ messages in thread
From: David Aguilar @ 2016-12-05  5:15 UTC (permalink / raw)
  To: P. Duijst; +Cc: Johannes Schindelin, git

On Fri, Dec 02, 2016 at 05:05:06PM +0100, Johannes Schindelin wrote:
> Hi Peter,
> 
> On Fri, 2 Dec 2016, P. Duijst wrote:
> 
> > Incase filenames are used with a quote ' or a bracket [  (and maybe some more
> > characters), git "diff" and "difftool -y" works fine, but git *difftool **-d*
> > gives the next error message:
> > 
> >    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> >    $ git diff
> >    diff --git a/Test ''inch.txt b/Test ''inch.txt
> >    index dbff793..41f3257 100644
> >    --- a/Test ''inch.txt
> >    +++ b/Test ''inch.txt
> >    @@ -1 +1,3 @@
> >    +
> >    +ddd
> >      Test error in simple repository
> >    warning: LF will be replaced by CRLF in Test ''inch.txt.
> >    The file will have its original line endings in your working directory.
> > 
> >    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> >    *$ git difftool -d*
> >    *fatal: Cannot open '/d/Dev/test//Test ''inch.txt': No such file or
> >    directory*
> >    *hash-object /d/Dev/test//Test ''inch.txt: command returned error: 128*
> > 
> >    peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> >    $
> > 
> > 
> > This issue is inside V2.10.x and V2.11.0.
> > V2.9.0 is working correctly...
> 
> You say v2.11.0, but did you also try the new, experimental builtin
> difftool? You can test without reinstalling:
> 
> 	git -c difftool.useBuiltin=true difftool -d ...

FWIW, I verified that this problem does not manifest itself on
Linux, using the current scripted difftool.

Peter, what actual diff tool are you using?

Since these filenames work fine with "difftool -d" on Linux, it
suggests that this is either a tool-specific issue, or an issue
related to unix-to-windows path translation.
-- 
David

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Error after calling git difftool -d with
  2016-12-05  5:15   ` David Aguilar
@ 2016-12-05  7:58     ` P. Duijst
  2016-12-05 10:56       ` Johannes Schindelin
  0 siblings, 1 reply; 6+ messages in thread
From: P. Duijst @ 2016-12-05  7:58 UTC (permalink / raw)
  To: David Aguilar; +Cc: Johannes Schindelin, git

On 12/5/2016 06:15, David Aguilar wrote:
> On Fri, Dec 02, 2016 at 05:05:06PM +0100, Johannes Schindelin wrote:
>> Hi Peter,
>>
>> On Fri, 2 Dec 2016, P. Duijst wrote:
>>
>>> Incase filenames are used with a quote ' or a bracket [  (and maybe some more
>>> characters), git "diff" and "difftool -y" works fine, but git *difftool **-d*
>>> gives the next error message:
>>>
>>>     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
>>>     $ git diff
>>>     diff --git a/Test ''inch.txt b/Test ''inch.txt
>>>     index dbff793..41f3257 100644
>>>     --- a/Test ''inch.txt
>>>     +++ b/Test ''inch.txt
>>>     @@ -1 +1,3 @@
>>>     +
>>>     +ddd
>>>       Test error in simple repository
>>>     warning: LF will be replaced by CRLF in Test ''inch.txt.
>>>     The file will have its original line endings in your working directory.
>>>
>>>     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
>>>     *$ git difftool -d*
>>>     *fatal: Cannot open '/d/Dev/test//Test ''inch.txt': No such file or
>>>     directory*
>>>     *hash-object /d/Dev/test//Test ''inch.txt: command returned error: 128*
>>>
>>>     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
>>>     $
>>>
>>>
>>> This issue is inside V2.10.x and V2.11.0.
>>> V2.9.0 is working correctly...
>> You say v2.11.0, but did you also try the new, experimental builtin
>> difftool? You can test without reinstalling:
>>
>> 	git -c difftool.useBuiltin=true difftool -d ...
> FWIW, I verified that this problem does not manifest itself on
> Linux, using the current scripted difftool.
>
> Peter, what actual diff tool are you using?
>
> Since these filenames work fine with "difftool -d" on Linux, it
> suggests that this is either a tool-specific issue, or an issue
> related to unix-to-windows path translation.
Hi all,

@Johannes: "git -c difftool.useBuiltin=true difftool -d" works OK :-), 
beyond compare is launching with the diff's displayed
@David: I am using Beyond Compare V4.1.9

Best regards,

Peter


^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Error after calling git difftool -d with
  2016-12-05  7:58     ` P. Duijst
@ 2016-12-05 10:56       ` Johannes Schindelin
  2016-12-09  9:47         ` David Aguilar
  0 siblings, 1 reply; 6+ messages in thread
From: Johannes Schindelin @ 2016-12-05 10:56 UTC (permalink / raw)
  To: P. Duijst; +Cc: David Aguilar, git

Hi Peter,

On Mon, 5 Dec 2016, P. Duijst wrote:

> On 12/5/2016 06:15, David Aguilar wrote:
> > On Fri, Dec 02, 2016 at 05:05:06PM +0100, Johannes Schindelin wrote:
> > >
> > > On Fri, 2 Dec 2016, P. Duijst wrote:
> > >
> > > > Incase filenames are used with a quote ' or a bracket [  (and
> > > > maybe some more characters), git "diff" and "difftool -y" works
> > > > fine, but git *difftool **-d* gives the next error message:
> > > >
> > > >     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> > > >     $ git diff
> > > >     diff --git a/Test ''inch.txt b/Test ''inch.txt
> > > >     index dbff793..41f3257 100644
> > > >     --- a/Test ''inch.txt
> > > >     +++ b/Test ''inch.txt
> > > >     @@ -1 +1,3 @@
> > > >     +
> > > >     +ddd
> > > >       Test error in simple repository
> > > >     warning: LF will be replaced by CRLF in Test ''inch.txt.
> > > >     The file will have its original line endings in your working
> > > >     directory.
> > > >
> > > >     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> > > >     *$ git difftool -d*
> > > >     *fatal: Cannot open '/d/Dev/test//Test ''inch.txt': No such file or
> > > >     directory*
> > > >     *hash-object /d/Dev/test//Test ''inch.txt: command returned error:
> > > >     128*
> > > >
> > > >     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> > > >     $
> > > >
> > > >
> > > > This issue is inside V2.10.x and V2.11.0.
> > > > V2.9.0 is working correctly...
> > > You say v2.11.0, but did you also try the new, experimental builtin
> > > difftool? You can test without reinstalling:
> > >
> > >  git -c difftool.useBuiltin=true difftool -d ...
> >
> > FWIW, I verified that this problem does not manifest itself on Linux,
> > using the current scripted difftool.
> >
> > Peter, what actual diff tool are you using?
> >
> > Since these filenames work fine with "difftool -d" on Linux, it
> > suggests that this is either a tool-specific issue, or an issue
> > related to unix-to-windows path translation.
> 
> @Johannes: "git -c difftool.useBuiltin=true difftool -d" works OK :-), beyond
> compare is launching with the diff's displayed

Perfect.

In that case, I think it is not worth fixing the scripted tool but focus
on getting rid of it in favor of the builtin version.

It's not like it is the only problem with having difftool implemented
as a script...

Ciao,
Johannes

^ permalink raw reply	[flat|nested] 6+ messages in thread

* Re: Error after calling git difftool -d with
  2016-12-05 10:56       ` Johannes Schindelin
@ 2016-12-09  9:47         ` David Aguilar
  0 siblings, 0 replies; 6+ messages in thread
From: David Aguilar @ 2016-12-09  9:47 UTC (permalink / raw)
  To: Johannes Schindelin; +Cc: P. Duijst, git

On Mon, Dec 05, 2016 at 11:56:31AM +0100, Johannes Schindelin wrote:
> Hi Peter,
> 
> On Mon, 5 Dec 2016, P. Duijst wrote:
> 
> > On 12/5/2016 06:15, David Aguilar wrote:
> > > On Fri, Dec 02, 2016 at 05:05:06PM +0100, Johannes Schindelin wrote:
> > > >
> > > > On Fri, 2 Dec 2016, P. Duijst wrote:
> > > >
> > > > > Incase filenames are used with a quote ' or a bracket [  (and
> > > > > maybe some more characters), git "diff" and "difftool -y" works
> > > > > fine, but git *difftool **-d* gives the next error message:
> > > > >
> > > > >     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> > > > >     $ git diff
> > > > >     diff --git a/Test ''inch.txt b/Test ''inch.txt
> > > > >     index dbff793..41f3257 100644
> > > > >     --- a/Test ''inch.txt
> > > > >     +++ b/Test ''inch.txt
> > > > >     @@ -1 +1,3 @@
> > > > >     +
> > > > >     +ddd
> > > > >       Test error in simple repository
> > > > >     warning: LF will be replaced by CRLF in Test ''inch.txt.
> > > > >     The file will have its original line endings in your working
> > > > >     directory.
> > > > >
> > > > >     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> > > > >     *$ git difftool -d*
> > > > >     *fatal: Cannot open '/d/Dev/test//Test ''inch.txt': No such file or
> > > > >     directory*
> > > > >     *hash-object /d/Dev/test//Test ''inch.txt: command returned error:
> > > > >     128*
> > > > >
> > > > >     peter@scm_ws_10 MINGW64 /d/Dev/test (master)
> > > > >     $
> > > > >
> > > > >
> > > > > This issue is inside V2.10.x and V2.11.0.
> > > > > V2.9.0 is working correctly...
> > > > You say v2.11.0, but did you also try the new, experimental builtin
> > > > difftool? You can test without reinstalling:
> > > >
> > > >  git -c difftool.useBuiltin=true difftool -d ...
> > >
> > > FWIW, I verified that this problem does not manifest itself on Linux,
> > > using the current scripted difftool.
> > >
> > > Peter, what actual diff tool are you using?
> > >
> > > Since these filenames work fine with "difftool -d" on Linux, it
> > > suggests that this is either a tool-specific issue, or an issue
> > > related to unix-to-windows path translation.
> > 
> > @Johannes: "git -c difftool.useBuiltin=true difftool -d" works OK :-), beyond
> > compare is launching with the diff's displayed
> 
> Perfect.
> 
> In that case, I think it is not worth fixing the scripted tool but focus
> on getting rid of it in favor of the builtin version.
> 
> It's not like it is the only problem with having difftool implemented
> as a script...

I just sent some patches[1] that makes it so that difftool always
operates from the top-level of the repo, particularly when
calling hash-object.  They also eliminate using paths with
embedded "//" in them, both of which may have caused this issue

Though we can side-step this specific issue with the new builtin
difftool, if our use of hash-object with double-slashed absolute
paths was not the problem reported above, then another
possibility is that there's a problem in the Git.pm Perl module,
which affects more than just difftool.

I'm curious to understand the root cause of the problem.

Does Git.pm go through a shell on Windows?

Why was hash-object complaining about the correct path,
but reported that it didn't exist?
Did having "//" in the path cause the problem?

Enlightenment from the GFW internals perspective is much
appreciated.

Since this reportedly worked in older versions, I'm led to
believe that 32b8c581ec (difftool: use Git::* functions instead
of passing around state), which first introduced the use of
paths with embedded "//", was the root cause.  If this is true
then the patches should fix the scripted difftool on Windows.

[1] http://public-inbox.org/git/20161209085848.10929-1-davvid@gmail.com/T/#t

cheers,
-- 
David

^ permalink raw reply	[flat|nested] 6+ messages in thread

end of thread, other threads:[~2016-12-09  9:47 UTC | newest]

Thread overview: 6+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2016-12-02 12:15 Error after calling git difftool -d with P. Duijst
2016-12-02 16:05 ` Johannes Schindelin
2016-12-05  5:15   ` David Aguilar
2016-12-05  7:58     ` P. Duijst
2016-12-05 10:56       ` Johannes Schindelin
2016-12-09  9:47         ` David Aguilar

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 NNTP newsgroup(s).