Merge branch 'mt/do-not-use-scld-in-working-tree'

"git apply" adjusted the permission bits of working-tree files and
directories according core.sharedRepository setting by mistake and
for a long time, which has been corrected.

* mt/do-not-use-scld-in-working-tree:
  apply: don't use core.sharedRepository to create working tree files
This commit is contained in:
Junio C Hamano
2020-12-08 15:11:19 -08:00
5 changed files with 47 additions and 6 deletions

View File

@ -73,4 +73,30 @@ test_expect_success FILEMODE 'bogus mode is rejected' '
test_i18ngrep "invalid mode" err
'
test_expect_success POSIXPERM 'do not use core.sharedRepository for working tree files' '
git reset --hard &&
test_config core.sharedRepository 0666 &&
(
# Remove a default ACL if possible.
(setfacl -k newdir 2>/dev/null || true) &&
umask 0077 &&
# Test both files (f1) and leading dirs (d)
mkdir d &&
touch f1 d/f2 &&
git add f1 d/f2 &&
git diff --staged >patch-f1-and-f2.txt &&
rm -rf d f1 &&
git apply patch-f1-and-f2.txt &&
echo "-rw-------" >f1_mode.expected &&
echo "drwx------" >d_mode.expected &&
test_modebits f1 >f1_mode.actual &&
test_modebits d >d_mode.actual &&
test_cmp f1_mode.expected f1_mode.actual &&
test_cmp d_mode.expected d_mode.actual
)
'
test_done

View File

@ -367,9 +367,9 @@ test_chmod () {
git update-index --add "--chmod=$@"
}
# Get the modebits from a file.
# Get the modebits from a file or directory.
test_modebits () {
ls -l "$1" | sed -e 's|^\(..........\).*|\1|'
ls -ld "$1" | sed -e 's|^\(..........\).*|\1|'
}
# Unset a configuration variable, but don't fail if it doesn't exist.