Show More
@@ -28,13 +28,18 b' for name in allnames:' | |||||
28 | print '%05o %s%s' % (os.lstat(name).st_mode & 07777, name, suffix) |
|
28 | print '%05o %s%s' % (os.lstat(name).st_mode & 07777, name, suffix) | |
29 | EOF |
|
29 | EOF | |
30 |
|
30 | |||
|
31 | cat >mode.py <<EOF | |||
|
32 | import sys | |||
|
33 | import os | |||
|
34 | print '%05o' % os.lstat(sys.argv[1]).st_mode | |||
|
35 | EOF | |||
|
36 | ||||
31 | umask 077 |
|
37 | umask 077 | |
32 |
|
38 | |||
33 | hg init repo |
|
39 | hg init repo | |
34 | cd repo |
|
40 | cd repo | |
35 |
|
41 | |||
36 | chmod 0770 .hg/store |
|
42 | chmod 0770 .hg/store | |
37 | chmod g+s .hg/store |
|
|||
38 |
|
43 | |||
39 | echo '% before commit' |
|
44 | echo '% before commit' | |
40 | echo '% store can be written by the group, other files cannot' |
|
45 | echo '% store can be written by the group, other files cannot' | |
@@ -66,3 +71,20 b' echo' | |||||
66 | echo '% after push' |
|
71 | echo '% after push' | |
67 | echo '% group can still write everything' |
|
72 | echo '% group can still write everything' | |
68 | python ../printmodes.py ../push |
|
73 | python ../printmodes.py ../push | |
|
74 | ||||
|
75 | # Test that we don't lose the setgid bit when we call chmod. | |||
|
76 | # Not all systems support setgid directories (e.g. HFS+), so | |||
|
77 | # just check that directories have the same mode. | |||
|
78 | cd .. | |||
|
79 | hg init setgid | |||
|
80 | cd setgid | |||
|
81 | chmod g+s .hg/store 2> /dev/null | |||
|
82 | mkdir dir | |||
|
83 | touch dir/file | |||
|
84 | hg ci -qAm 'add dir/file' | |||
|
85 | storemode=`python ../mode.py .hg/store` | |||
|
86 | dirmode=`python ../mode.py .hg/store/data/dir` | |||
|
87 | if [ "$storemode" != "$dirmode" ]; then | |||
|
88 | echo "$storemode != $dirmode" | |||
|
89 | fi | |||
|
90 |
@@ -4,7 +4,7 b'' | |||||
4 | 00700 ./.hg/ |
|
4 | 00700 ./.hg/ | |
5 | 00600 ./.hg/00changelog.i |
|
5 | 00600 ./.hg/00changelog.i | |
6 | 00600 ./.hg/requires |
|
6 | 00600 ./.hg/requires | |
7 |
0 |
|
7 | 00770 ./.hg/store/ | |
8 |
|
8 | |||
9 | % after commit |
|
9 | % after commit | |
10 | % working dir files can only be written by the owner |
|
10 | % working dir files can only be written by the owner | |
@@ -15,11 +15,11 b' 00700 ./.hg/' | |||||
15 | 00600 ./.hg/00changelog.i |
|
15 | 00600 ./.hg/00changelog.i | |
16 | 00660 ./.hg/dirstate |
|
16 | 00660 ./.hg/dirstate | |
17 | 00600 ./.hg/requires |
|
17 | 00600 ./.hg/requires | |
18 |
0 |
|
18 | 00770 ./.hg/store/ | |
19 | 00660 ./.hg/store/00changelog.i |
|
19 | 00660 ./.hg/store/00changelog.i | |
20 | 00660 ./.hg/store/00manifest.i |
|
20 | 00660 ./.hg/store/00manifest.i | |
21 |
0 |
|
21 | 00770 ./.hg/store/data/ | |
22 |
0 |
|
22 | 00770 ./.hg/store/data/dir/ | |
23 | 00660 ./.hg/store/data/dir/bar.i |
|
23 | 00660 ./.hg/store/data/dir/bar.i | |
24 | 00660 ./.hg/store/data/foo.i |
|
24 | 00660 ./.hg/store/data/foo.i | |
25 | 00660 ./.hg/store/undo |
|
25 | 00660 ./.hg/store/undo |
General Comments 0
You need to be logged in to leave comments.
Login now