* [PATH 0/2] On Cygwin support both UNIX and DOS style path-names
@ 2011-08-05 16:10 Pascal Obry
2011-08-05 16:10 ` [PATCH 1/2] git-compat-util: add generic find_last_dir_sep that respects is_dir_sep Pascal Obry
2011-08-05 16:10 ` [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
0 siblings, 2 replies; 19+ messages in thread
From: Pascal Obry @ 2011-08-05 16:10 UTC (permalink / raw)
To: git
This is the second version of this serie after Theo review. It includes
the patch from Theo first and mine after.
Let me know if it looks ok. Thanks.
^ permalink raw reply [flat|nested] 19+ messages in thread
* [PATCH 1/2] git-compat-util: add generic find_last_dir_sep that respects is_dir_sep
2011-08-05 16:10 [PATH 0/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
@ 2011-08-05 16:10 ` Pascal Obry
2011-08-05 16:10 ` [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
1 sibling, 0 replies; 19+ messages in thread
From: Pascal Obry @ 2011-08-05 16:10 UTC (permalink / raw)
To: git; +Cc: Theo Niessink
From: Theo Niessink <theo@taletn.com>
Move MinGW's find_last_dir_sep to git-compat-util.h, so it can also be used
on other platforms that define is_dir_sep, e.g. Cygwin.
Signed-off-by: Theo Niessink <theo@taletn.com>
Acked-by: Pascal Obry <pascal@obry.net>
---
compat/mingw.h | 9 ---------
git-compat-util.h | 12 ++++++++++++
2 files changed, 12 insertions(+), 9 deletions(-)
diff --git a/compat/mingw.h b/compat/mingw.h
index ce9dd98..547568b 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -300,15 +300,6 @@ int winansi_fprintf(FILE *stream, const char *format, ...) __attribute__((format
#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
-static inline char *mingw_find_last_dir_sep(const char *path)
-{
- char *ret = NULL;
- for (; *path; ++path)
- if (is_dir_sep(*path))
- ret = (char *)path;
- return ret;
-}
-#define find_last_dir_sep mingw_find_last_dir_sep
#define PATH_SEP ';'
#define PRIuMAX "I64u"
diff --git a/git-compat-util.h b/git-compat-util.h
index ddfbf77..c2c94cd 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -211,6 +211,18 @@ extern char *gitbasename(char *);
#define has_dos_drive_prefix(path) 0
#endif
+#if !defined(find_last_dir_sep) && defined(is_dir_sep)
+static inline char *compat_find_last_dir_sep(const char *path)
+{
+ char *ret = NULL;
+ for (; *path; ++path)
+ if (is_dir_sep(*path))
+ ret = (char *)path;
+ return ret;
+}
+#define find_last_dir_sep compat_find_last_dir_sep
+#endif
+
#ifndef is_dir_sep
#define is_dir_sep(c) ((c) == '/')
#endif
--
1.7.6.404.g5d2fc
^ permalink raw reply related [flat|nested] 19+ messages in thread
* [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 16:10 [PATH 0/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
2011-08-05 16:10 ` [PATCH 1/2] git-compat-util: add generic find_last_dir_sep that respects is_dir_sep Pascal Obry
@ 2011-08-05 16:10 ` Pascal Obry
2011-08-05 17:29 ` Erik Faye-Lund
` (3 more replies)
1 sibling, 4 replies; 19+ messages in thread
From: Pascal Obry @ 2011-08-05 16:10 UTC (permalink / raw)
To: git; +Cc: Pascal Obry
In fact Cygwin supports both, so make Git agree with this.
The failing case is when a file is committed in a sub-dir of the
repository using a log message from a file specified with a DOS
style path-name. To reproduce:
$ cd src
$ git commit -F c:\tmp\log.txt file.c
fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
or directory.
Signed-off-by: Pascal Obry <pascal@obry.net>
---
compat/cygwin.h | 3 +++
1 files changed, 3 insertions(+), 0 deletions(-)
diff --git a/compat/cygwin.h b/compat/cygwin.h
index a3229f5..de9737c 100644
--- a/compat/cygwin.h
+++ b/compat/cygwin.h
@@ -7,3 +7,6 @@ extern stat_fn_t cygwin_lstat_fn;
#define stat(path, buf) (*cygwin_stat_fn)(path, buf)
#define lstat(path, buf) (*cygwin_lstat_fn)(path, buf)
+
+#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
+#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
--
1.7.6.404.g5d2fc
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 16:10 ` [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
@ 2011-08-05 17:29 ` Erik Faye-Lund
2011-08-05 17:35 ` Pascal Obry
2011-08-09 17:26 ` Ramsay Jones
2011-08-05 17:48 ` Junio C Hamano
` (2 subsequent siblings)
3 siblings, 2 replies; 19+ messages in thread
From: Erik Faye-Lund @ 2011-08-05 17:29 UTC (permalink / raw)
To: Pascal Obry; +Cc: git
On Fri, Aug 5, 2011 at 6:10 PM, Pascal Obry <pascal@obry.net> wrote:
> In fact Cygwin supports both, so make Git agree with this.
> The failing case is when a file is committed in a sub-dir of the
> repository using a log message from a file specified with a DOS
> style path-name. To reproduce:
>
> $ cd src
> $ git commit -F c:\tmp\log.txt file.c
> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
> or directory.
Cygwin is a unix-layer on top of Windows, designed to play by the
POSIX-rules. So why would you want to support Windows-style paths on
Cygwin?
If you want a Git that handles Windows paths, use Git for Windows...
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:29 ` Erik Faye-Lund
@ 2011-08-05 17:35 ` Pascal Obry
2011-08-05 17:39 ` Erik Faye-Lund
2011-08-09 17:30 ` Ramsay Jones
2011-08-09 17:26 ` Ramsay Jones
1 sibling, 2 replies; 19+ messages in thread
From: Pascal Obry @ 2011-08-05 17:35 UTC (permalink / raw)
To: kusmabite; +Cc: git
Le 05/08/2011 19:29, Erik Faye-Lund a écrit :
> Cygwin is a unix-layer on top of Windows, designed to play by the
> POSIX-rules. So why would you want to support Windows-style paths on
> Cygwin?
Because cygwin toolset does support \.
> If you want a Git that handles Windows paths, use Git for Windows...
Note that Windows is a special case as even the Win32 API does support \
and /, so every tool on Windows seems to handle nicely this. Why not
Git, be it Cygwin/Git. If it does not break anything else.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net - http://v2p.fr.eu.org
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver keys.gnupg.net --recv-key F949BD3B
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:35 ` Pascal Obry
@ 2011-08-05 17:39 ` Erik Faye-Lund
2011-08-05 17:51 ` Erik Faye-Lund
2011-08-05 18:39 ` Pascal Obry
2011-08-09 17:30 ` Ramsay Jones
1 sibling, 2 replies; 19+ messages in thread
From: Erik Faye-Lund @ 2011-08-05 17:39 UTC (permalink / raw)
To: pascal; +Cc: git
On Fri, Aug 5, 2011 at 7:35 PM, Pascal Obry <pascal@obry.net> wrote:
> Le 05/08/2011 19:29, Erik Faye-Lund a écrit :
>>
>> Cygwin is a unix-layer on top of Windows, designed to play by the
>> POSIX-rules. So why would you want to support Windows-style paths on
>> Cygwin?
>
> Because cygwin toolset does support \.
>
Are you saying that the built-in Cygwin tools (like ls etc) support
Windows-style paths (C:\path\to\file)? If that is the case, I
completely understand the desire to accept Windows-paths.
>> If you want a Git that handles Windows paths, use Git for Windows...
>
> Note that Windows is a special case as even the Win32 API does support \ and
> /, so every tool on Windows seems to handle nicely this. Why not Git, be it
> Cygwin/Git. If it does not break anything else.
If the Cygwin-tools does not support drive-prefixes (i.e "C:\") but
does support both slashes as path-separators, then I agree with the
patch but not with the commit message.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 16:10 ` [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
2011-08-05 17:29 ` Erik Faye-Lund
@ 2011-08-05 17:48 ` Junio C Hamano
2011-08-05 17:58 ` Erik Faye-Lund
2011-08-06 7:01 ` Pascal Obry
2011-08-09 17:24 ` Ramsay Jones
2011-08-09 19:47 ` Johannes Sixt
3 siblings, 2 replies; 19+ messages in thread
From: Junio C Hamano @ 2011-08-05 17:48 UTC (permalink / raw)
To: Pascal Obry; +Cc: git, Theo Niessink
Pascal Obry <pascal@obry.net> writes:
> In fact Cygwin supports both, so make Git agree with this.
> The failing case is when a file is committed in a sub-dir of the
> repository using a log message from a file specified with a DOS
> style path-name. To reproduce:
>
> $ cd src
> $ git commit -F c:\tmp\log.txt file.c
> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
> or directory.
>
> Signed-off-by: Pascal Obry <pascal@obry.net>
> ---
> compat/cygwin.h | 3 +++
> 1 files changed, 3 insertions(+), 0 deletions(-)
>
> diff --git a/compat/cygwin.h b/compat/cygwin.h
> index a3229f5..de9737c 100644
> --- a/compat/cygwin.h
> +++ b/compat/cygwin.h
> @@ -7,3 +7,6 @@ extern stat_fn_t cygwin_lstat_fn;
>
> #define stat(path, buf) (*cygwin_stat_fn)(path, buf)
> #define lstat(path, buf) (*cygwin_lstat_fn)(path, buf)
> +
> +#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
> +#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
I wonder if these two that are the same as mingw should further be
consolidated into one implementation, something like below.
Note that I am just wondering, not suggesting, without knowing which is
better.
compat/cygwin.h | 5 ++---
compat/mingw.h | 3 +--
git-compat-util.h | 11 ++++-------
3 files changed, 7 insertions(+), 12 deletions(-)
diff --git a/compat/cygwin.h b/compat/cygwin.h
index de9737c..ef0889b 100644
--- a/compat/cygwin.h
+++ b/compat/cygwin.h
@@ -1,12 +1,11 @@
#include <sys/types.h>
#include <sys/stat.h>
+#define DOS_STYLE_DIR_SEP 1
+
typedef int (*stat_fn_t)(const char*, struct stat*);
extern stat_fn_t cygwin_stat_fn;
extern stat_fn_t cygwin_lstat_fn;
#define stat(path, buf) (*cygwin_stat_fn)(path, buf)
#define lstat(path, buf) (*cygwin_lstat_fn)(path, buf)
-
-#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
-#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
diff --git a/compat/mingw.h b/compat/mingw.h
index 547568b..26ca0ef 100644
--- a/compat/mingw.h
+++ b/compat/mingw.h
@@ -298,8 +298,7 @@ int winansi_fprintf(FILE *stream, const char *format, ...) __attribute__((format
* git specific compatibility
*/
-#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
-#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
+#define DOS_STYLE_DIR_SEP 1
#define PATH_SEP ';'
#define PRIuMAX "I64u"
diff --git a/git-compat-util.h b/git-compat-util.h
index c2c94cd..133f331 100644
--- a/git-compat-util.h
+++ b/git-compat-util.h
@@ -211,7 +211,9 @@ extern char *gitbasename(char *);
#define has_dos_drive_prefix(path) 0
#endif
-#if !defined(find_last_dir_sep) && defined(is_dir_sep)
+#if defined(DOS_STYLE_DIR_SEP)
+#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
+#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
static inline char *compat_find_last_dir_sep(const char *path)
{
char *ret = NULL;
@@ -221,13 +223,8 @@ static inline char *compat_find_last_dir_sep(const char *path)
return ret;
}
#define find_last_dir_sep compat_find_last_dir_sep
-#endif
-
-#ifndef is_dir_sep
+#else
#define is_dir_sep(c) ((c) == '/')
-#endif
-
-#ifndef find_last_dir_sep
#define find_last_dir_sep(path) strrchr(path, '/')
#endif
^ permalink raw reply related [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:39 ` Erik Faye-Lund
@ 2011-08-05 17:51 ` Erik Faye-Lund
2011-08-05 18:39 ` Pascal Obry
1 sibling, 0 replies; 19+ messages in thread
From: Erik Faye-Lund @ 2011-08-05 17:51 UTC (permalink / raw)
To: pascal; +Cc: git
On Fri, Aug 5, 2011 at 7:39 PM, Erik Faye-Lund <kusmabite@gmail.com> wrote:
> On Fri, Aug 5, 2011 at 7:35 PM, Pascal Obry <pascal@obry.net> wrote:
>> Le 05/08/2011 19:29, Erik Faye-Lund a écrit :
>>>
>>> Cygwin is a unix-layer on top of Windows, designed to play by the
>>> POSIX-rules. So why would you want to support Windows-style paths on
>>> Cygwin?
>>
>> Because cygwin toolset does support \.
>>
>
> Are you saying that the built-in Cygwin tools (like ls etc) support
> Windows-style paths (C:\path\to\file)? If that is the case, I
> completely understand the desire to accept Windows-paths.
>
>>> If you want a Git that handles Windows paths, use Git for Windows...
>>
>> Note that Windows is a special case as even the Win32 API does support \ and
>> /, so every tool on Windows seems to handle nicely this. Why not Git, be it
>> Cygwin/Git. If it does not break anything else.
>
> If the Cygwin-tools does not support drive-prefixes (i.e "C:\") but
> does support both slashes as path-separators, then I agree with the
> patch but not with the commit message.
>
correction: if that is the case, I agree with the is_dir_sep-part, but
not the has_dos_drive_prefix-part of the patch (and also not the
example from the commit message)
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:48 ` Junio C Hamano
@ 2011-08-05 17:58 ` Erik Faye-Lund
2011-08-06 7:01 ` Pascal Obry
1 sibling, 0 replies; 19+ messages in thread
From: Erik Faye-Lund @ 2011-08-05 17:58 UTC (permalink / raw)
To: Junio C Hamano; +Cc: Pascal Obry, git, Theo Niessink
On Fri, Aug 5, 2011 at 7:48 PM, Junio C Hamano <gitster@pobox.com> wrote:
> Pascal Obry <pascal@obry.net> writes:
>
>> In fact Cygwin supports both, so make Git agree with this.
>> The failing case is when a file is committed in a sub-dir of the
>> repository using a log message from a file specified with a DOS
>> style path-name. To reproduce:
>>
>> $ cd src
>> $ git commit -F c:\tmp\log.txt file.c
>> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
>> or directory.
>>
>> Signed-off-by: Pascal Obry <pascal@obry.net>
>> ---
>> compat/cygwin.h | 3 +++
>> 1 files changed, 3 insertions(+), 0 deletions(-)
>>
>> diff --git a/compat/cygwin.h b/compat/cygwin.h
>> index a3229f5..de9737c 100644
>> --- a/compat/cygwin.h
>> +++ b/compat/cygwin.h
>> @@ -7,3 +7,6 @@ extern stat_fn_t cygwin_lstat_fn;
>>
>> #define stat(path, buf) (*cygwin_stat_fn)(path, buf)
>> #define lstat(path, buf) (*cygwin_lstat_fn)(path, buf)
>> +
>> +#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
>> +#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
>
> I wonder if these two that are the same as mingw should further be
> consolidated into one implementation, something like below.
>
> Note that I am just wondering, not suggesting, without knowing which is
> better.
IMO this becomes a bit hard to read as you have to ping-pong between
sources to understand exactly what that flag does. We have
compat/win32.h, perhaps we should move the macros there and include it
from both compat/mingw.h and compat/cygwin.h instead (given that we're
going to do this, of course)?
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:39 ` Erik Faye-Lund
2011-08-05 17:51 ` Erik Faye-Lund
@ 2011-08-05 18:39 ` Pascal Obry
1 sibling, 0 replies; 19+ messages in thread
From: Pascal Obry @ 2011-08-05 18:39 UTC (permalink / raw)
To: kusmabite; +Cc: git
Le 05/08/2011 19:39, Erik Faye-Lund a écrit :
> Are you saying that the built-in Cygwin tools (like ls etc) support
> Windows-style paths (C:\path\to\file)? If that is the case, I
> completely understand the desire to accept Windows-paths.
Exactly.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net - http://v2p.fr.eu.org
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver keys.gnupg.net --recv-key F949BD3B
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:48 ` Junio C Hamano
2011-08-05 17:58 ` Erik Faye-Lund
@ 2011-08-06 7:01 ` Pascal Obry
1 sibling, 0 replies; 19+ messages in thread
From: Pascal Obry @ 2011-08-06 7:01 UTC (permalink / raw)
To: Junio C Hamano; +Cc: git, Theo Niessink
Le 05/08/2011 19:48, Junio C Hamano a écrit :
> I wonder if these two that are the same as mingw should further be
> consolidated into one implementation, something like below.
Fine with me.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net - http://v2p.fr.eu.org
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver keys.gnupg.net --recv-key F949BD3B
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 16:10 ` [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
2011-08-05 17:29 ` Erik Faye-Lund
2011-08-05 17:48 ` Junio C Hamano
@ 2011-08-09 17:24 ` Ramsay Jones
2011-08-09 20:38 ` Pascal Obry
2011-08-10 2:44 ` Vijay Lakshminarayanan
2011-08-09 19:47 ` Johannes Sixt
3 siblings, 2 replies; 19+ messages in thread
From: Ramsay Jones @ 2011-08-09 17:24 UTC (permalink / raw)
To: Pascal Obry; +Cc: git
Pascal Obry wrote:
> In fact Cygwin supports both, so make Git agree with this.
> The failing case is when a file is committed in a sub-dir of the
> repository using a log message from a file specified with a DOS
> style path-name. To reproduce:
>
> $ cd src
> $ git commit -F c:\tmp\log.txt file.c
> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
> or directory.
Hmm, are you using bash or cmd.exe? Using bash I get the following:
$ cd src
$ git commut -F c:\tmp\log.txt file.c
fatal: could not read file 'src/c:tmplog.txt': No such file or directory
$
Which is what I would expect of (any) posix shell, viz:
$ ls c:\
> ^C
$ ls c:\\
AUTOEXEC.BAT* NTDETECT.COM* WATCOM/ msysgit/
CMPNENTS/ Program Files/ WINDOWS/ msysgit-old/
CONFIG.SYS* RECYCLER/ boot.ini* ntldr*
Documents and Settings/ SUPPORT/ cygwin/ pagefile.sys
I386/ SWSTAMP.TXT* cygwintemp/ ssl/
IO.SYS* System Volume Information/ dm/ uname/
MSDOS.SYS* TOOLSCD/ dm840/ zlib/
MSOCache/ VALUEADD/ hiberfil.sys
$
If you want to use cmd.exe as your shell, I suspect msysGit (Git For Windows)
may be a better fit.
ATB,
Ramsay Jones
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:29 ` Erik Faye-Lund
2011-08-05 17:35 ` Pascal Obry
@ 2011-08-09 17:26 ` Ramsay Jones
1 sibling, 0 replies; 19+ messages in thread
From: Ramsay Jones @ 2011-08-09 17:26 UTC (permalink / raw)
To: kusmabite; +Cc: Pascal Obry, git
Erik Faye-Lund wrote:
> On Fri, Aug 5, 2011 at 6:10 PM, Pascal Obry <pascal@obry.net> wrote:
>> In fact Cygwin supports both, so make Git agree with this.
>> The failing case is when a file is committed in a sub-dir of the
>> repository using a log message from a file specified with a DOS
>> style path-name. To reproduce:
>>
>> $ cd src
>> $ git commit -F c:\tmp\log.txt file.c
>> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
>> or directory.
>
> Cygwin is a unix-layer on top of Windows, designed to play by the
> POSIX-rules. So why would you want to support Windows-style paths on
> Cygwin?
>
> If you want a Git that handles Windows paths, use Git for Windows...
Indeed, I have to agree. This takes the cygwin port in the wrong
direction ...
ATB,
Ramsay Jones
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 17:35 ` Pascal Obry
2011-08-05 17:39 ` Erik Faye-Lund
@ 2011-08-09 17:30 ` Ramsay Jones
1 sibling, 0 replies; 19+ messages in thread
From: Ramsay Jones @ 2011-08-09 17:30 UTC (permalink / raw)
To: pascal; +Cc: kusmabite, git
Pascal Obry wrote:
> Le 05/08/2011 19:29, Erik Faye-Lund a écrit :
>> Cygwin is a unix-layer on top of Windows, designed to play by the
>> POSIX-rules. So why would you want to support Windows-style paths on
>> Cygwin?
>
> Because cygwin toolset does support \.
Hmm, if you don't mind escaping it in bash all the time!
>
>> If you want a Git that handles Windows paths, use Git for Windows...
>
> Note that Windows is a special case as even the Win32 API does support \
> and /, so every tool on Windows seems to handle nicely this. Why not
> Git, be it Cygwin/Git. If it does not break anything else.
Hmm, I wouldn't be too sure of that, either ...
ATB,
Ramsay Jones
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-05 16:10 ` [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
` (2 preceding siblings ...)
2011-08-09 17:24 ` Ramsay Jones
@ 2011-08-09 19:47 ` Johannes Sixt
3 siblings, 0 replies; 19+ messages in thread
From: Johannes Sixt @ 2011-08-09 19:47 UTC (permalink / raw)
To: Pascal Obry; +Cc: git
Am 05.08.2011 18:10, schrieb Pascal Obry:
> In fact Cygwin supports both, so make Git agree with this.
> The failing case is when a file is committed in a sub-dir of the
> repository using a log message from a file specified with a DOS
> style path-name. To reproduce:
>
> $ cd src
> $ git commit -F c:\tmp\log.txt file.c
> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
> or directory.
Do you also want to support this:
$ git add src\file.c
i.e., backslash in pathspec? Then you need more than this:
> +#define has_dos_drive_prefix(path) (isalpha(*(path)) && (path)[1] == ':')
> +#define is_dir_sep(c) ((c) == '/' || (c) == '\\')
In particular, you have to enable backslash processing in
setup.c:prefix_filename(), but then you lose the ability to escape
special characters with the backslash.
-- Hannes
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-09 17:24 ` Ramsay Jones
@ 2011-08-09 20:38 ` Pascal Obry
2011-08-11 20:35 ` Ramsay Jones
2011-08-10 2:44 ` Vijay Lakshminarayanan
1 sibling, 1 reply; 19+ messages in thread
From: Pascal Obry @ 2011-08-09 20:38 UTC (permalink / raw)
To: Ramsay Jones; +Cc: git
Le 09/08/2011 19:24, Ramsay Jones a écrit :
> Pascal Obry wrote:
>> In fact Cygwin supports both, so make Git agree with this.
>> The failing case is when a file is committed in a sub-dir of the
>> repository using a log message from a file specified with a DOS
>> style path-name. To reproduce:
>>
>> $ cd src
>> $ git commit -F c:\tmp\log.txt file.c
>> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
>> or directory.
>
> Hmm, are you using bash or cmd.exe? Using bash I get the following:
bash.
>
> $ cd src
> $ git commut -F c:\tmp\log.txt file.c
> fatal: could not read file 'src/c:tmplog.txt': No such file or directory
> $
>
> Which is what I would expect of (any) posix shell, viz:
>
> $ ls c:\
> > ^C
> $ ls c:\\
> AUTOEXEC.BAT* NTDETECT.COM* WATCOM/ msysgit/
> CMPNENTS/ Program Files/ WINDOWS/ msysgit-old/
> CONFIG.SYS* RECYCLER/ boot.ini* ntldr*
> Documents and Settings/ SUPPORT/ cygwin/ pagefile.sys
> I386/ SWSTAMP.TXT* cygwintemp/ ssl/
> IO.SYS* System Volume Information/ dm/ uname/
> MSDOS.SYS* TOOLSCD/ dm840/ zlib/
> MSOCache/ VALUEADD/ hiberfil.sys
Exactly, \\ this is what I have used and this is the bug. Cygwin
supports ls c:\\ so should Cygwin/Git. My quoted example was missing the
escape \.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net - http://v2p.fr.eu.org
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver keys.gnupg.net --recv-key F949BD3B
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-09 17:24 ` Ramsay Jones
2011-08-09 20:38 ` Pascal Obry
@ 2011-08-10 2:44 ` Vijay Lakshminarayanan
1 sibling, 0 replies; 19+ messages in thread
From: Vijay Lakshminarayanan @ 2011-08-10 2:44 UTC (permalink / raw)
To: Ramsay Jones; +Cc: Pascal Obry, git
Ramsay Jones <ramsay@ramsay1.demon.co.uk> writes:
> Pascal Obry wrote:
>> In fact Cygwin supports both, so make Git agree with this.
>> The failing case is when a file is committed in a sub-dir of the
>> repository using a log message from a file specified with a DOS
>> style path-name. To reproduce:
>>
>> $ cd src
>> $ git commit -F c:\tmp\log.txt file.c
>> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
>> or directory.
>
> Hmm, are you using bash or cmd.exe? Using bash I get the following:
>
> $ cd src
> $ git commut -F c:\tmp\log.txt file.c
> fatal: could not read file 'src/c:tmplog.txt': No such file or directory
> $
>
> Which is what I would expect of (any) posix shell, viz:
>
> $ ls c:\
> > ^C
> $ ls c:\\
> AUTOEXEC.BAT* NTDETECT.COM* WATCOM/ msysgit/
> CMPNENTS/ Program Files/ WINDOWS/ msysgit-old/
> CONFIG.SYS* RECYCLER/ boot.ini* ntldr*
> Documents and Settings/ SUPPORT/ cygwin/ pagefile.sys
> I386/ SWSTAMP.TXT* cygwintemp/ ssl/
> IO.SYS* System Volume Information/ dm/ uname/
> MSDOS.SYS* TOOLSCD/ dm840/ zlib/
> MSOCache/ VALUEADD/ hiberfil.sys
> $
FWIW, I use git on Cygwin and it works quite well. Cygwin supports
Windows paths when quoted. So
$ ls 'C:\Users\vijay\Desktop'
works as expected. This is very useful when you're copying paths from,
say, Windows Explorer, to Cygwin.
> ATB,
> Ramsay Jones
>
> --
> To unsubscribe from this list: send the line "unsubscribe git" in
> the body of a message to majordomo@vger.kernel.org
> More majordomo info at http://vger.kernel.org/majordomo-info.html
--
Cheers
~vijay
Gnus should be more complicated.
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-09 20:38 ` Pascal Obry
@ 2011-08-11 20:35 ` Ramsay Jones
2011-08-13 17:34 ` Pascal Obry
0 siblings, 1 reply; 19+ messages in thread
From: Ramsay Jones @ 2011-08-11 20:35 UTC (permalink / raw)
To: pascal; +Cc: git
Pascal Obry wrote:
> Le 09/08/2011 19:24, Ramsay Jones a écrit :
>> Pascal Obry wrote:
>>> In fact Cygwin supports both, so make Git agree with this.
>>> The failing case is when a file is committed in a sub-dir of the
>>> repository using a log message from a file specified with a DOS
>>> style path-name. To reproduce:
>>>
>>> $ cd src
>>> $ git commit -F c:\tmp\log.txt file.c
>>> fatal: could not read log file 'src/c:\tmp\log.txt': No such file \
>>> or directory.
>> Hmm, are you using bash or cmd.exe? Using bash I get the following:
>
> bash.
Ah, OK. The example in your commit message looked odd (ie incorrect) which
made me think that you were probably using cnd.exe, so ...
>> $ cd src
>> $ git commut -F c:\tmp\log.txt file.c
>> fatal: could not read file 'src/c:tmplog.txt': No such file or directory
>> $
>>
>> Which is what I would expect of (any) posix shell, viz:
>>
>> $ ls c:\
>> > ^C
>> $ ls c:\\
>> AUTOEXEC.BAT* NTDETECT.COM* WATCOM/ msysgit/
>> CMPNENTS/ Program Files/ WINDOWS/ msysgit-old/
>> CONFIG.SYS* RECYCLER/ boot.ini* ntldr*
>> Documents and Settings/ SUPPORT/ cygwin/ pagefile.sys
>> I386/ SWSTAMP.TXT* cygwintemp/ ssl/
>> IO.SYS* System Volume Information/ dm/ uname/
>> MSDOS.SYS* TOOLSCD/ dm840/ zlib/
>> MSOCache/ VALUEADD/ hiberfil.sys
>
> Exactly, \\ this is what I have used and this is the bug. Cygwin
> supports ls c:\\ so should Cygwin/Git. My quoted example was missing the
> escape \.
... could you please correct your commit message. Thanks!
ATB,
Ramsay Jones
^ permalink raw reply [flat|nested] 19+ messages in thread
* Re: [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names
2011-08-11 20:35 ` Ramsay Jones
@ 2011-08-13 17:34 ` Pascal Obry
0 siblings, 0 replies; 19+ messages in thread
From: Pascal Obry @ 2011-08-13 17:34 UTC (permalink / raw)
To: Ramsay Jones; +Cc: git
Le 11/08/2011 22:35, Ramsay Jones a écrit :
> ... could you please correct your commit message. Thanks!
Done, thanks for your review.
Pascal.
--
--|------------------------------------------------------
--| Pascal Obry Team-Ada Member
--| 45, rue Gabriel Peri - 78114 Magny Les Hameaux FRANCE
--|------------------------------------------------------
--| http://www.obry.net - http://v2p.fr.eu.org
--| "The best way to travel is by means of imagination"
--|
--| gpg --keyserver keys.gnupg.net --recv-key F949BD3B
^ permalink raw reply [flat|nested] 19+ messages in thread
end of thread, other threads:[~2011-08-13 17:34 UTC | newest]
Thread overview: 19+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2011-08-05 16:10 [PATH 0/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
2011-08-05 16:10 ` [PATCH 1/2] git-compat-util: add generic find_last_dir_sep that respects is_dir_sep Pascal Obry
2011-08-05 16:10 ` [PATCH 2/2] On Cygwin support both UNIX and DOS style path-names Pascal Obry
2011-08-05 17:29 ` Erik Faye-Lund
2011-08-05 17:35 ` Pascal Obry
2011-08-05 17:39 ` Erik Faye-Lund
2011-08-05 17:51 ` Erik Faye-Lund
2011-08-05 18:39 ` Pascal Obry
2011-08-09 17:30 ` Ramsay Jones
2011-08-09 17:26 ` Ramsay Jones
2011-08-05 17:48 ` Junio C Hamano
2011-08-05 17:58 ` Erik Faye-Lund
2011-08-06 7:01 ` Pascal Obry
2011-08-09 17:24 ` Ramsay Jones
2011-08-09 20:38 ` Pascal Obry
2011-08-11 20:35 ` Ramsay Jones
2011-08-13 17:34 ` Pascal Obry
2011-08-10 2:44 ` Vijay Lakshminarayanan
2011-08-09 19:47 ` Johannes Sixt
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).