When core.sharedRepository is used, set_shared_perm() in path.c needs lstat() to return the correct POSIX permissions. The default for cygwin is core.ignoreCygwinFSTricks = false, which means that a simplified and fast implementation of lstat() is used. Especially the file permission bits are wrong in cygwin_lstat_fn(): The read-only attribute of a file is used to calculate the permissions, resulting in either rw-r--r-- or r--r--r-- Use a compile switch IGNORECYGWINFSTRICKS to disable the usage of cygwin_lstat_fn() only in path.c Signed-off-by: Torsten Bögershausen <tboegi@xxxxxx> --- compat/cygwin.h | 2 ++ path.c | 2 ++ 2 files changed, 4 insertions(+) diff --git a/compat/cygwin.h b/compat/cygwin.h index a3229f5..984efbe 100644 --- a/compat/cygwin.h +++ b/compat/cygwin.h @@ -5,5 +5,7 @@ typedef int (*stat_fn_t)(const char*, struct stat*); extern stat_fn_t cygwin_stat_fn; extern stat_fn_t cygwin_lstat_fn; +#ifndef IGNORECYGWINFSTRICKS #define stat(path, buf) (*cygwin_stat_fn)(path, buf) #define lstat(path, buf) (*cygwin_lstat_fn)(path, buf) +#endif diff --git a/path.c b/path.c index d3d3f8b..0acfabf 100644 --- a/path.c +++ b/path.c @@ -10,6 +10,8 @@ * * which is what it's designed for. */ +#define IGNORECYGWINFSTRICKS + #include "cache.h" #include "strbuf.h" #include "string-list.h" -- 1.8.1.3 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html