Skip to content
  • Junio C Hamano's avatar
    "core.sharedrepository = 0mode" should set, not loosen · 5a688fe4
    Junio C Hamano authored
    
    
    This fixes the behaviour of octal notation to how it is defined in the
    documentation, while keeping the traditional "loosen only" semantics
    intact for "group" and "everybody".
    
    Three main points of this patch are:
    
     - For an explicit octal notation, the internal shared_repository variable
       is set to a negative value, so that we can tell "group" (which is to
       "OR" in 0660) and 0660 (which is to "SET" to 0660);
    
     - git-init did not set shared_repository variable early enough to affect
       the initial creation of many files, notably copied templates and the
       configuration.  We set it very early when a command-line option
       specifies a custom value.
    
     - Many codepaths create files inside $GIT_DIR by various ways that all
       involve mkstemp(), and then call move_temp_to_file() to rename it to
       its final destination.  We can add adjust_shared_perm() call here; for
       the traditional "loosen-only", this would be a no-op for many codepaths
       because the mode is already loose enough, but with the new behaviour it
       makes a difference.
    
    Signed-off-by: default avatarJunio C Hamano <gitster@pobox.com>
    5a688fe4