The 06cbe8550324e0fd2290839bf3b9a92aa53b70ab core.sharedRepository handling extension broke backwards compatibility; before, shared=1 meant that Git merely ensured the repository is group-writable, not that it's _only_ group-writable, which is the current behaviour. Thus, with umask 002, Git creates repository with /rw.rw.--./, this patch fixes it back to /rw.rw.r-./. Maybe it makes sense to provide the current semantics in some way too, but that cannot be done at the expense of ditching backwards compatibility; this bug has just wasted me two hours and broke repo.or.cz pushing for several hours. Cc: Heikki Orsila <heikki.orsila@xxxxxx> Signed-off-by: Petr Baudis <pasky@xxxxxxxxxxxx> --- The patch description is clarified and a test is added to t1301. path.c | 2 +- t/t1301-shared-repo.sh | 19 +++++++++++++++++++ 2 files changed, 20 insertions(+), 1 deletions(-) diff --git a/path.c b/path.c index 5983255..75c5915 100644 --- a/path.c +++ b/path.c @@ -269,7 +269,7 @@ int adjust_shared_perm(const char *path) mode = st.st_mode; if (shared_repository) { - int tweak = shared_repository; + int tweak = (mode & 0777) | shared_repository; if (!(mode & S_IWUSR)) tweak &= ~0222; mode = (mode & ~0777) | tweak; diff --git a/t/t1301-shared-repo.sh b/t/t1301-shared-repo.sh index 6c78c8b..d26191b 100755 --- a/t/t1301-shared-repo.sh +++ b/t/t1301-shared-repo.sh @@ -17,6 +17,25 @@ test_expect_success 'shared = 0400 (faulty permission u-w)' ' test $ret != "0" ' +test_expect_success 'shared=1 does not override sane umask' ' + mkdir sub && + cd sub && + umask 002 && + git init --shared=1 && + test 1 = $(git config core.sharedrepository) && + actual="$(ls -l .git/HEAD)" && + rm -rf sub && + case "$actual" in + -rw-rw-r--*) + : happy + ;; + *) + echo Oops, .git/HEAD is not 0664 but $actual + false + ;; + esac +' + test_expect_success 'shared=all' ' mkdir sub && cd sub && -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html