зеркало из https://github.com/microsoft/git.git
Do not use GUID on dir in git init --shared=all on FreeBSD
It does not allow changing the bit to a non-root user. This fixes t1301-shared-repo.sh on the platform. Signed-off-by: Alex Riesen <raa.lkml@gmail.com> Signed-off-by: Junio C Hamano <gitster@pobox.com>
This commit is contained in:
Родитель
ce2cf27adc
Коммит
81a24b52c1
4
Makefile
4
Makefile
|
@ -478,6 +478,7 @@ ifeq ($(uname_S),FreeBSD)
|
|||
NO_MEMMEM = YesPlease
|
||||
BASIC_CFLAGS += -I/usr/local/include
|
||||
BASIC_LDFLAGS += -L/usr/local/lib
|
||||
DIR_HAS_BSD_GROUP_SEMANTICS = YesPlease
|
||||
endif
|
||||
ifeq ($(uname_S),OpenBSD)
|
||||
NO_STRCASESTR = YesPlease
|
||||
|
@ -747,6 +748,9 @@ ifdef THREADED_DELTA_SEARCH
|
|||
EXTLIBS += -lpthread
|
||||
LIB_OBJS += thread-utils.o
|
||||
endif
|
||||
ifdef DIR_HAS_BSD_GROUP_SEMANTICS
|
||||
COMPAT_CFLAGS += -DDIR_HAS_BSD_GROUP_SEMANTICS
|
||||
endif
|
||||
|
||||
ifeq ($(TCLTK_PATH),)
|
||||
NO_TCLTK=NoThanks
|
||||
|
|
|
@ -437,4 +437,10 @@ void git_qsort(void *base, size_t nmemb, size_t size,
|
|||
#define qsort git_qsort
|
||||
#endif
|
||||
|
||||
#ifndef DIR_HAS_BSD_GROUP_SEMANTICS
|
||||
# define FORCE_DIR_SET_GID S_ISGID
|
||||
#else
|
||||
# define FORCE_DIR_SET_GID 0
|
||||
#endif
|
||||
|
||||
#endif
|
||||
|
|
2
path.c
2
path.c
|
@ -283,7 +283,7 @@ int adjust_shared_perm(const char *path)
|
|||
? (S_IXGRP|S_IXOTH)
|
||||
: 0));
|
||||
if (S_ISDIR(mode))
|
||||
mode |= S_ISGID;
|
||||
mode |= FORCE_DIR_SET_GID;
|
||||
if ((mode & st.st_mode) != mode && chmod(path, mode) < 0)
|
||||
return -2;
|
||||
return 0;
|
||||
|
|
Загрузка…
Ссылка в новой задаче