Skip to content

Commit 5027acc

Browse files
committed
Merge branch 'jc/maint-shared-literally' into maint
* jc/maint-shared-literally: Update docs on behaviour of 'core.sharedRepository' and 'git init --shared' t1301-shared-repo: fix forced modes test
2 parents 67daebf + 098082f commit 5027acc

File tree

3 files changed

+23
-11
lines changed

3 files changed

+23
-11
lines changed

Documentation/config.txt

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -290,8 +290,10 @@ core.sharedRepository::
290290
group-shareable. When 'umask' (or 'false'), git will use permissions
291291
reported by umask(2). When '0xxx', where '0xxx' is an octal number,
292292
files in the repository will have this mode value. '0xxx' will override
293-
user's umask value, and thus, users with a safe umask (0077) can use
294-
this option. Examples: '0660' is equivalent to 'group'. '0640' is a
293+
user's umask value (whereas the other options will only override
294+
requested parts of the user's umask value). Examples: '0660' will make
295+
the repo read/write-able for the owner and group, but inaccessible to
296+
others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a
295297
repository that is group-readable but not group-writable.
296298
See linkgit:git-init[1]. False by default.
297299

Documentation/git-init.txt

Lines changed: 11 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -54,15 +54,21 @@ is given:
5454

5555
- 'group' (or 'true'): Make the repository group-writable, (and g+sx, since
5656
the git group may be not the primary group of all users).
57+
This is used to loosen the permissions of an otherwise safe umask(2) value.
58+
Note that the umask still applies to the other permission bits (e.g. if
59+
umask is '0022', using 'group' will not remove read privileges from other
60+
(non-group) users). See '0xxx' for how to exactly specify the repository
61+
permissions.
5762

5863
- 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository
5964
readable by all users.
6065

61-
- '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'
62-
Any option except 'umask' can be set using this option. '0xxx' will
63-
override users umask(2) value, and thus, users with a safe umask (0077)
64-
can use this option. '0640' will create a repository which is group-readable
65-
but not writable. '0660' is equivalent to 'group'.
66+
- '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'.
67+
'0xxx' will override users' umask(2) value (and not only loosen permissions
68+
as 'group' and 'all' does). '0640' will create a repository which is
69+
group-readable, but not group-writable or accessible to others. '0660' will
70+
create a repo that is readable and writable to the current user and group,
71+
but inaccessible to others.
6672

6773
By default, the configuration flag receive.denyNonFastForwards is enabled
6874
in shared repositories, so that you cannot force a non fast-forwarding push

t/t1301-shared-repo.sh

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -141,11 +141,14 @@ test_expect_success 'forced modes' '
141141
git commit -a -m initial &&
142142
git repack
143143
) &&
144-
find new/.git -print |
144+
# List repository files meant to be protected; note that
145+
# COMMIT_EDITMSG does not matter---0mode is not about a
146+
# repository with a work tree.
147+
find new/.git -type f -name COMMIT_EDITMSG -prune -o -print |
145148
xargs ls -ld >actual &&
146149
147150
# Everything must be unaccessible to others
148-
test -z "$(sed -n -e "/^.......---/d" actual)" &&
151+
test -z "$(sed -e "/^.......---/d" actual)" &&
149152
150153
# All directories must have either 2770 or 770
151154
test -z "$(sed -n -e "/^drwxrw[sx]---/d" -e "/^d/p" actual)" &&
@@ -156,10 +159,11 @@ test_expect_success 'forced modes' '
156159
p
157160
}" actual)" &&
158161
159-
# All files inside objects must be 0440
162+
# All files inside objects must be accessible by us
160163
test -z "$(sed -n -e "/objects\//{
161164
/^d/d
162-
/^-r--r-----/d
165+
/^-r.-r.----/d
166+
p
163167
}" actual)"
164168
'
165169

0 commit comments

Comments
 (0)