Show More
@@ -0,0 +1,67 b'' | |||
|
1 | #!/bin/sh | |
|
2 | ||
|
3 | # test that new files created in .hg inherit the permissions from .hg/store | |
|
4 | ||
|
5 | "$TESTDIR/hghave" unix-permissions || exit 80 | |
|
6 | ||
|
7 | mkdir dir | |
|
8 | # just in case somebody has a strange $TMPDIR | |
|
9 | chmod g-s dir | |
|
10 | cd dir | |
|
11 | ||
|
12 | cat >printmodes.py <<EOF | |
|
13 | import os, sys | |
|
14 | ||
|
15 | allnames = [] | |
|
16 | isdir = {} | |
|
17 | for root, dirs, files in os.walk(sys.argv[1]): | |
|
18 | for d in dirs: | |
|
19 | name = os.path.join(root, d) | |
|
20 | isdir[name] = 1 | |
|
21 | allnames.append(name) | |
|
22 | for f in files: | |
|
23 | name = os.path.join(root, f) | |
|
24 | allnames.append(name) | |
|
25 | allnames.sort() | |
|
26 | for name in allnames: | |
|
27 | suffix = name in isdir and '/' or '' | |
|
28 | print '%05o %s%s' % (os.lstat(name).st_mode & 07777, name, suffix) | |
|
29 | EOF | |
|
30 | ||
|
31 | umask 077 | |
|
32 | ||
|
33 | hg init repo | |
|
34 | cd repo | |
|
35 | ||
|
36 | chmod 02770 .hg/store | |
|
37 | ||
|
38 | echo '% before commit' | |
|
39 | echo '% store can be written by the group, other files cannot' | |
|
40 | echo '% store is setgid' | |
|
41 | python ../printmodes.py . | |
|
42 | ||
|
43 | mkdir dir | |
|
44 | touch foo dir/bar | |
|
45 | hg ci -qAm 'add files' | |
|
46 | ||
|
47 | echo | |
|
48 | echo '% after commit' | |
|
49 | echo '% working dir files can only be written by the owner' | |
|
50 | echo '% files created in .hg can be written by the group' | |
|
51 | echo '% (in particular, store/**, dirstate, branch.cache)' | |
|
52 | echo '% new directories are setgid' | |
|
53 | python ../printmodes.py . | |
|
54 | ||
|
55 | umask 007 | |
|
56 | hg init ../push | |
|
57 | echo | |
|
58 | echo '% before push' | |
|
59 | echo '% group can write everything' | |
|
60 | python ../printmodes.py ../push | |
|
61 | ||
|
62 | umask 077 | |
|
63 | hg -q push ../push | |
|
64 | echo | |
|
65 | echo '% after push' | |
|
66 | echo '% group can still write everything' | |
|
67 | python ../printmodes.py ../push |
@@ -0,0 +1,54 b'' | |||
|
1 | % before commit | |
|
2 | % store can be written by the group, other files cannot | |
|
3 | % store is setgid | |
|
4 | 00700 ./.hg/ | |
|
5 | 00600 ./.hg/00changelog.i | |
|
6 | 00600 ./.hg/requires | |
|
7 | 02770 ./.hg/store/ | |
|
8 | ||
|
9 | % after commit | |
|
10 | % working dir files can only be written by the owner | |
|
11 | % files created in .hg can be written by the group | |
|
12 | % (in particular, store/**, dirstate, branch.cache) | |
|
13 | % new directories are setgid | |
|
14 | 00700 ./.hg/ | |
|
15 | 00600 ./.hg/00changelog.i | |
|
16 | 00660 ./.hg/dirstate | |
|
17 | 00600 ./.hg/requires | |
|
18 | 02770 ./.hg/store/ | |
|
19 | 00660 ./.hg/store/00changelog.i | |
|
20 | 00660 ./.hg/store/00manifest.i | |
|
21 | 02770 ./.hg/store/data/ | |
|
22 | 02770 ./.hg/store/data/dir/ | |
|
23 | 00660 ./.hg/store/data/dir/bar.i | |
|
24 | 00660 ./.hg/store/data/foo.i | |
|
25 | 00600 ./.hg/store/undo | |
|
26 | 00660 ./.hg/undo.branch | |
|
27 | 00660 ./.hg/undo.dirstate | |
|
28 | 00700 ./dir/ | |
|
29 | 00600 ./dir/bar | |
|
30 | 00600 ./foo | |
|
31 | ||
|
32 | % before push | |
|
33 | % group can write everything | |
|
34 | 00770 ../push/.hg/ | |
|
35 | 00660 ../push/.hg/00changelog.i | |
|
36 | 00660 ../push/.hg/requires | |
|
37 | 00770 ../push/.hg/store/ | |
|
38 | ||
|
39 | % after push | |
|
40 | % group can still write everything | |
|
41 | 00770 ../push/.hg/ | |
|
42 | 00660 ../push/.hg/00changelog.i | |
|
43 | 00660 ../push/.hg/branch.cache | |
|
44 | 00660 ../push/.hg/requires | |
|
45 | 00770 ../push/.hg/store/ | |
|
46 | 00660 ../push/.hg/store/00changelog.i | |
|
47 | 00660 ../push/.hg/store/00manifest.i | |
|
48 | 00770 ../push/.hg/store/data/ | |
|
49 | 00770 ../push/.hg/store/data/dir/ | |
|
50 | 00660 ../push/.hg/store/data/dir/bar.i | |
|
51 | 00660 ../push/.hg/store/data/foo.i | |
|
52 | 00600 ../push/.hg/store/undo | |
|
53 | 00660 ../push/.hg/undo.branch | |
|
54 | 00660 ../push/.hg/undo.dirstate |
General Comments 0
You need to be logged in to leave comments.
Login now