]> git.ipfire.org Git - thirdparty/git.git/commit - path.c
Make core.sharedRepository work under cygwin 1.7
authorTorsten Bögershausen <tboegi@web.de>
Sat, 23 Mar 2013 12:40:29 +0000 (13:40 +0100)
committerJunio C Hamano <gitster@pobox.com>
Mon, 25 Mar 2013 21:57:33 +0000 (14:57 -0700)
commit0117c2f043183fb99e9b046b0df7d64c1b296624
treea14923132f37710b05f36e596cc8cd9acff23517
parent7b592fadf1e23b10b913e0771b9f711770597266
Make core.sharedRepository work under cygwin 1.7

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 the fast implementation in do_stat() is used instead of
lstat().

lstat() under cygwin uses the Windows security model to implement
POSIX-like permissions.  The user, group or everyone bits can be set
individually.

do_stat() simplifes the file permission bits, and may return a wrong
value.  The read-only attribute of a file is used to calculate the
permissions, resulting in either rw-r--r-- or r--r--r--

One effect of the simplified do_stat() is that t1301 fails.

Add a function cygwin_get_st_mode_bits() which returns the POSIX
permissions.  When not compiling for cygwin, true_mode_bits() in
path.c is used.

Side note:

t1301 passes under cygwin 1.5.

The "user write" bit is synchronized with the "read only" attribute
of a file:

    $ chmod 444 x
    $ attrib x
    A    R     C:\temp\pt\x

    cygwin 1.7 would show
    A          C:\temp\pt\x

Signed-off-by: Torsten Bögershausen <tboegi@web.de>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
compat/cygwin.c
compat/cygwin.h
git-compat-util.h
path.c