shared repository: optionally allow reading to "others".
This enhances core.sharedrepository to have additionally specify that read and exec permissions to be given to others as well. It is useful when serving a repository via gitweb and git-daemon that runs as a user outside the project group. The configuration item can take the following values: [core] sharedrepository ; the same as "group" sharedrepository = true ; ditto sharedrepository = 1 ; ditto sharedrepository = group ; allow rwx to group sharedrepository = all ; allow rwx to group, allow rx to other sharedrepository = umask ; not shared - use umask It also extends "git init-db" to take "--shared=all" and friends from the command line. Signed-off-by: Junio C Hamano <junkio@cox.net>
This commit is contained in:
14
path.c
14
path.c
@ -262,11 +262,21 @@ int adjust_shared_perm(const char *path)
|
||||
return -1;
|
||||
mode = st.st_mode;
|
||||
if (mode & S_IRUSR)
|
||||
mode |= S_IRGRP;
|
||||
mode |= (shared_repository == PERM_GROUP
|
||||
? S_IRGRP
|
||||
: (shared_repository == PERM_EVERYBODY
|
||||
? (S_IRGRP|S_IROTH)
|
||||
: 0));
|
||||
|
||||
if (mode & S_IWUSR)
|
||||
mode |= S_IWGRP;
|
||||
|
||||
if (mode & S_IXUSR)
|
||||
mode |= S_IXGRP;
|
||||
mode |= (shared_repository == PERM_GROUP
|
||||
? S_IXGRP
|
||||
: (shared_repository == PERM_EVERYBODY
|
||||
? (S_IXGRP|S_IXOTH)
|
||||
: 0));
|
||||
if (S_ISDIR(mode))
|
||||
mode |= S_ISGID;
|
||||
if (chmod(path, mode) < 0)
|
||||
|
Reference in New Issue
Block a user