Skip to content
  • Torsten Bögershausen's avatar
    Make core.sharedRepository work under cygwin 1.7 · 0117c2f0
    Torsten Bögershausen authored and Junio C Hamano's avatar Junio C Hamano committed
    
    
    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: default avatarTorsten Bögershausen <tboegi@web.de>
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    0117c2f0