init --shared=0666 isn't
From: Steve Folly <hidden>
Date: 2016-06-15 22:48:24
Using git 1.7.0.2 on Mac OS X 10.6.2:
$ git init --bare --shared=0666 /tmp/shared.git
$ git --git-dir=/tmp/shared.git remote add --mirror \
origin git://git.kernel.org/pub/scm/git/git.git
$ git --git-dir=/tmp/shared.git fetch origin
# login as someone else; different uid, different gid, then:
$ git --git-dir=/tmp/shared.git fetch origin
error: cannot open /tmp/shared.git/FETCH_HEAD: Permission denied
FETCH_HEAD is owned by the original user, with 0644 permissions,
not 0666 as originally requested.
I've only had a quick glance at the source - my first guess
is that in builtin-fetch.c, store_updated_refs and
truncate_fetch_head should call adjust_shared_perm after
closing the file being written? Or, should an empty FETCH_HEAD
with appropriate shared perms be written during init?
In my case I'm using /tmp/shared.git as a mirror for other
local repositories init'ed with --reference=/path/to/mirror.git
and all I'll be doing if fetching into it periodically, so I think fixing
FETCH_HEAD will suffice for me.
But, I wonder if there are other files written that will need fixing
also - ORIG_HEAD, MERGE_HEAD?
Is there a workaround for this or am I doing something wrong?
Thanks for any help.
Regards,
Steve