Right now, Git creates unreadable pack files on non-shared repositories when the user has a umask of 077, even when the default ACLs for the directory would give read/write access to a specific user. Signed-off-by: Matthieu Moy <Matthieu.Moy@xxxxxxx> --- t/t1304-default-acl.sh | 49 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 files changed, 49 insertions(+), 0 deletions(-) create mode 100755 t/t1304-default-acl.sh diff --git a/t/t1304-default-acl.sh b/t/t1304-default-acl.sh new file mode 100755 index 0000000..4ee44a1 --- /dev/null +++ b/t/t1304-default-acl.sh @@ -0,0 +1,49 @@ +#!/bin/sh +# +# Copyright (c) 2010 Matthieu Moy +# + +test_description='Test repository with default ACL' + +. ./test-lib.sh + +# We need an arbitrary other user give permission to using ACLs. root +# is a good candidate: exists on all unices, and it has permission +# anyway, so we don't create a security hole running the testsuite. + +if ! setfacl -Rm u:root:rwx .; then + say "Skipping ACL tests: unable to use setfacl" + test_done +fi + +setfacl -Rm d:u:"$LOGNAME":rwx . +setfacl -Rm d:u:root:rwx . + +touch file.txt +git add file.txt +git commit -m "init" + +modebits () { + ls -l "$1" | sed -e 's|^\(..........\).*|\1|' +} + +test_expect_failure 'git gc does not break ACLs with restrictive umask' ' + umask 077 && + git gc && + actual=$(modebits .git/objects/pack/*.pack) && + case "$actual" in + -r--r-----*) + : happy + ;; + *) + false + ;; + esac && + getfacl .git/objects/pack/*.pack > actual && + grep -q "user:root:rwx" actual && + grep -q "user:${LOGNAME}:rwx" actual && + grep -q "mask::r--" actual && + grep -q "group::---" actual +' + +test_done -- 1.7.0.rc2.4.gc602c4 -- 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