All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Torsten Bögershausen" <tboegi@web.de>
To: Steven Penny <svnpenn@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: Cygwin Git with Windows paths
Date: Sun, 18 Nov 2018 16:41:24 +0100	[thread overview]
Message-ID: <20181118154124.GA21680@tor.lan> (raw)
In-Reply-To: <5bf18396.1c69fb81.20780.2b1d@mx.google.com>

On Sun, Nov 18, 2018 at 07:21:58AM -0800, Steven Penny wrote:
> Cygwin programs can handle Unix form paths:
> 
>    $ ls /var
>    cache  lib  log  run  tmp
> 
> and also Windows form paths:
> 
>    $ ls 'C:\cygwin64\var'
>    cache  lib  log  run  tmp
> 
> However current Cygwin Git cannot:
> 
>    $ 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@google.com>
> Date:   Mon Dec 12 10:16:52 2016 -0800
> 
>    real_path: resolve symlinks by hand
> 
>    The current implementation of real_path uses chdir() in order to resolve
>    symlinks.  Unfortunately this isn't thread-safe as chdir() affects a
>    process as a whole and not just an individual thread.  Instead perform
>    the symlink resolution by hand so that the calls to chdir() can be
>    removed, making real_path one step closer to being reentrant.
> 
>    Signed-off-by: Brandon Williams <bmwill@google.com>
>    Signed-off-by: Junio C Hamano <gitster@pobox.com>
> 
> This causes problems for any non-Cygwin tools that might call Git:
> 
> http://github.com/golang/go/issues/23155
> 

Thanks for the report
It seams as if "C:" is not recognized as an absolute path under
cygwin.
May be it should ?

Does the following help ? (fully untested)


diff --git a/compat/cygwin.h b/compat/cygwin.h
index 8e52de4644..12814e1edb 100644
--- a/compat/cygwin.h
+++ b/compat/cygwin.h
@@ -1,2 +1,4 @@
 int cygwin_offset_1st_component(const char *path);
 #define offset_1st_component cygwin_offset_1st_component
+#define has_dos_drive_prefix(path) \
+       (isalpha(*(path)) && (path)[1] == ':' ? 2 : 0)

  reply	other threads:[~2018-11-18 15:41 UTC|newest]

Thread overview: 56+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2018-11-18 15:21 Cygwin Git with Windows paths Steven Penny
2018-11-18 15:41 ` Torsten Bögershausen [this message]
2018-11-18 16:23   ` Steven Penny
2018-11-18 17:15     ` Torsten Bögershausen
2018-11-18 17:34       ` Steven Penny
2018-11-18 18:28         ` Torsten Bögershausen
2018-11-18 19:00           ` Steven Penny
2018-11-19  0:06       ` Junio C Hamano
2018-11-19  2:11         ` Randall S. Becker
2018-11-19  3:33           ` Junio C Hamano
2018-11-19  5:20             ` Torsten Bögershausen
2018-11-20  0:17               ` Steven Penny
2018-11-20 10:36                 ` Torsten Bögershausen
2018-11-20 12:51                   ` Steven Penny
2018-11-19 12:22             ` Randall S. Becker
2018-11-26 17:32 ` [PATCH v1/RFC 1/1] 'git clone <url> C:\cygwin\home\USER\repo' is working (again) tboegi
2018-11-27  0:35   ` Steven Penny
2018-11-27  1:16   ` Junio C Hamano
2018-11-27  2:49     ` Steven Penny
2018-11-27  5:23       ` Junio C Hamano
2018-11-27  6:20         ` Steven Penny
2018-11-27 12:55         ` Johannes Schindelin
2018-11-28  4:10           ` Junio C Hamano
2018-11-28  5:55             ` J.H. van de Water
2018-11-28  8:46               ` Johannes Schindelin
2018-11-28  9:01                 ` Houder
2018-11-28  9:35                   ` Johannes Schindelin
2018-11-27 20:10     ` Achim Gratz
2018-11-27 12:49   ` Johannes Schindelin
2018-11-28  4:12     ` Junio C Hamano
2018-11-27 20:05   ` Achim Gratz
2018-12-07 17:04 ` [PATCH v2 1/3] git " tboegi
2018-12-07 21:53   ` Johannes Schindelin
2018-12-08  0:49   ` Steven Penny
2018-12-10  8:46     ` Johannes Schindelin
2018-12-10 12:45       ` Steven Penny
2018-12-11 13:39         ` Johannes Schindelin
2018-12-12  0:42           ` Steven Penny
2018-12-12  7:29             ` Johannes Sixt
2018-12-12 12:40               ` Steven Penny
2018-12-13  3:52                 ` Junio C Hamano
2018-12-12 13:33               ` Johannes Schindelin
2018-12-12  3:47     ` Elijah Newren
2018-12-12 13:57       ` Johannes Schindelin
2018-12-07 17:04 ` [PATCH v2 2/3] offset_1st_component(), dos_drive_prefix() return size_t tboegi
2018-12-07 17:05 ` [PATCH v2 3/3] Refactor mingw_cygwin_offset_1st_component() tboegi
2018-12-07 22:18   ` Johannes Schindelin
2018-12-08 15:11 ` [PATCH v3 1/1] git clone <url> C:\cygwin\home\USER\repo' is working (again) tboegi
2018-12-08 16:24   ` Steven Penny
2018-12-09  1:39   ` Junio C Hamano
2018-12-10  8:32   ` Johannes Schindelin
2018-12-11  6:12     ` Torsten Bögershausen
2018-12-11 13:28       ` Johannes Schindelin
2018-12-11 18:55         ` Torsten Bögershausen
2018-12-15  4:33 ` [PATCH v4 " tboegi
2019-05-02  7:48   ` Achim Gratz

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20181118154124.GA21680@tor.lan \
    --to=tboegi@web.de \
    --cc=git@vger.kernel.org \
    --cc=svnpenn@gmail.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.