On 2018-11-19 04:33, Junio C Hamano wrote: > "Randall S. Becker" <rsbecker@xxxxxxxxxxxxx> writes: > >>> Torsten Bögershausen <tboegi@xxxxxx> writes: >>> >>>> And it may even be that we need a special handling for the "\" to be >>>> treated as "/". >>> >>> I do not do Windows, but is_dir_sep() needs to be tweaked if you want to do >>> that. >> >> Heavy Cygwin user here. It is used in my environment for >> cross-compilation. Everything should be done using / separators in >> Cygwin, not \. So /cygdrive/c, /cygdrive/d always prefaces the >> path rather than C:\ or D:\, which won't parse. It is, >> essentially, a bash environment, including that git completions >> work properly. Backslash ends up doing what it would in bash. > > In short, in your opinion, the original message in this thread > expresses an invalid wish, as C:\path\to\dir\ is not a valid way to > spell the path to the directory, and it should be written as > /cygdrive/c/path/to/dir instead? > > How well does this argument work in the real world, when another > claim in the original message > > This causes problems for any non-Cygwin tools that might call Git: > > http://github.com/golang/go/issues/23155 > > is taken into account, I wonder, though? > Back to the original email, where the path embedded in '' and the bash does not interpret the "\", I think. > $ git clone git://github.com/benhoyt/goawk 'C:\cygwin64\tmp\goawk' > Cloning into 'C:\cygwin64\tmp\goawk'... > fatal: Invalid path '/home/Steven/C:\cygwin64\tmp\goawk': No such file or > directory >It seems the problem is that Git thinks the Windows form path is relative >because it does not start with "/". >A Git Bisect reveals this: >05b458c104708141d2fad211d79703b3b99cc5a8 is the first bad commit >commit 05b458c104708141d2fad211d79703b3b99cc5a8 >Author: Brandon Williams <bmwill@xxxxxxxxxx> >Date: Mon Dec 12 10:16:52 2016 -0800 The first question is, does this work under Git for Windows ? Looking into 05b458c104708141d2fad, it seems as if the following functions need to be "overridden" for cygwin, similar as we do it for mingw: is_dir_sep() offset_1st_component() find_last_dir_sep() If nothing works, it may help to add some fprintf(stderr,...) in the functions used by 05b458c104708141d2f: strip_last_component(), get_next_component() real_path_internal()