test-inherit-mode
67 lines
| 1.4 KiB
| text/plain
|
TextLexer
/ tests / test-inherit-mode
Alexis S. L. Carvalho
|
r6064 | #!/bin/sh | ||
# test that new files created in .hg inherit the permissions from .hg/store | ||||
"$TESTDIR/hghave" unix-permissions || exit 80 | ||||
mkdir dir | ||||
# just in case somebody has a strange $TMPDIR | ||||
chmod g-s dir | ||||
cd dir | ||||
cat >printmodes.py <<EOF | ||||
import os, sys | ||||
allnames = [] | ||||
isdir = {} | ||||
for root, dirs, files in os.walk(sys.argv[1]): | ||||
for d in dirs: | ||||
name = os.path.join(root, d) | ||||
isdir[name] = 1 | ||||
allnames.append(name) | ||||
for f in files: | ||||
name = os.path.join(root, f) | ||||
allnames.append(name) | ||||
allnames.sort() | ||||
for name in allnames: | ||||
suffix = name in isdir and '/' or '' | ||||
print '%05o %s%s' % (os.lstat(name).st_mode & 07777, name, suffix) | ||||
EOF | ||||
umask 077 | ||||
hg init repo | ||||
cd repo | ||||
chmod 02770 .hg/store | ||||
echo '% before commit' | ||||
echo '% store can be written by the group, other files cannot' | ||||
echo '% store is setgid' | ||||
python ../printmodes.py . | ||||
mkdir dir | ||||
touch foo dir/bar | ||||
hg ci -qAm 'add files' | ||||
echo | ||||
echo '% after commit' | ||||
echo '% working dir files can only be written by the owner' | ||||
echo '% files created in .hg can be written by the group' | ||||
echo '% (in particular, store/**, dirstate, branch.cache)' | ||||
echo '% new directories are setgid' | ||||
python ../printmodes.py . | ||||
umask 007 | ||||
hg init ../push | ||||
echo | ||||
echo '% before push' | ||||
echo '% group can write everything' | ||||
python ../printmodes.py ../push | ||||
umask 077 | ||||
hg -q push ../push | ||||
echo | ||||
echo '% after push' | ||||
echo '% group can still write everything' | ||||
python ../printmodes.py ../push | ||||