summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorLibravatar Junio C Hamano <gitster@pobox.com>2009-04-19 12:40:05 -0700
committerLibravatar Junio C Hamano <gitster@pobox.com>2009-04-19 12:40:05 -0700
commit5027acc4db7046f6f0a87c82f16efd507d18d1dc (patch)
tree9b69a6da5064b2bd17cd72d2451dd9bcc8e85e1c
parentDescribe fixes since 1.6.2.3 (diff)
parentUpdate docs on behaviour of 'core.sharedRepository' and 'git init --shared' (diff)
downloadtgif-5027acc4db7046f6f0a87c82f16efd507d18d1dc.tar.xz
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
-rw-r--r--Documentation/config.txt6
-rw-r--r--Documentation/git-init.txt16
-rwxr-xr-xt/t1301-shared-repo.sh12
3 files changed, 23 insertions, 11 deletions
diff --git a/Documentation/config.txt b/Documentation/config.txt
index f5152c5038..6af58ff3aa 100644
--- a/Documentation/config.txt
+++ b/Documentation/config.txt
@@ -290,8 +290,10 @@ core.sharedRepository::
group-shareable. When 'umask' (or 'false'), git will use permissions
reported by umask(2). When '0xxx', where '0xxx' is an octal number,
files in the repository will have this mode value. '0xxx' will override
- user's umask value, and thus, users with a safe umask (0077) can use
- this option. Examples: '0660' is equivalent to 'group'. '0640' is a
+ user's umask value (whereas the other options will only override
+ requested parts of the user's umask value). Examples: '0660' will make
+ the repo read/write-able for the owner and group, but inaccessible to
+ others (equivalent to 'group' unless umask is e.g. '0022'). '0640' is a
repository that is group-readable but not group-writable.
See linkgit:git-init[1]. False by default.
diff --git a/Documentation/git-init.txt b/Documentation/git-init.txt
index 71749c09d3..7151d12f34 100644
--- a/Documentation/git-init.txt
+++ b/Documentation/git-init.txt
@@ -54,15 +54,21 @@ is given:
- 'group' (or 'true'): Make the repository group-writable, (and g+sx, since
the git group may be not the primary group of all users).
+ This is used to loosen the permissions of an otherwise safe umask(2) value.
+ Note that the umask still applies to the other permission bits (e.g. if
+ umask is '0022', using 'group' will not remove read privileges from other
+ (non-group) users). See '0xxx' for how to exactly specify the repository
+ permissions.
- 'all' (or 'world' or 'everybody'): Same as 'group', but make the repository
readable by all users.
- - '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'
- Any option except 'umask' can be set using this option. '0xxx' will
- override users umask(2) value, and thus, users with a safe umask (0077)
- can use this option. '0640' will create a repository which is group-readable
- but not writable. '0660' is equivalent to 'group'.
+ - '0xxx': '0xxx' is an octal number and each file will have mode '0xxx'.
+ '0xxx' will override users' umask(2) value (and not only loosen permissions
+ as 'group' and 'all' does). '0640' will create a repository which is
+ group-readable, but not group-writable or accessible to others. '0660' will
+ create a repo that is readable and writable to the current user and group,
+ but inaccessible to others.
By default, the configuration flag receive.denyNonFastForwards is enabled
in shared repositories, so that you cannot force a non fast-forwarding push
diff --git a/t/t1301-shared-repo.sh b/t/t1301-shared-repo.sh
index 3c8a2373ac..3fddc9ee78 100755
--- a/t/t1301-shared-repo.sh
+++ b/t/t1301-shared-repo.sh
@@ -141,11 +141,14 @@ test_expect_success 'forced modes' '
git commit -a -m initial &&
git repack
) &&
- find new/.git -print |
+ # List repository files meant to be protected; note that
+ # COMMIT_EDITMSG does not matter---0mode is not about a
+ # repository with a work tree.
+ find new/.git -type f -name COMMIT_EDITMSG -prune -o -print |
xargs ls -ld >actual &&
# Everything must be unaccessible to others
- test -z "$(sed -n -e "/^.......---/d" actual)" &&
+ test -z "$(sed -e "/^.......---/d" actual)" &&
# All directories must have either 2770 or 770
test -z "$(sed -n -e "/^drwxrw[sx]---/d" -e "/^d/p" actual)" &&
@@ -156,10 +159,11 @@ test_expect_success 'forced modes' '
p
}" actual)" &&
- # All files inside objects must be 0440
+ # All files inside objects must be accessible by us
test -z "$(sed -n -e "/objects\//{
/^d/d
- /^-r--r-----/d
+ /^-r.-r.----/d
+ p
}" actual)"
'