Subject: Re: git /objects directory created 755 by default?

From: Andreas Ericsson <[email-masked]>
Date: Thu, 22 Dec 2005 13:28:22 +0100

Johannes Schindelin wrote:
> Hi,
> 
> On Thu, 22 Dec 2005, Andreas Ericsson wrote:
> 
> 
>>Johannes Schindelin wrote:
>>
>>>Hi,
>>>
>>>On Wed, 21 Dec 2005, Junio C Hamano wrote:
>>>
>>>
>>>
>>>>Johannes Schindelin <[email-masked]> writes:
>>>>
>>>>
>>>>
>>>>>If you don't use git-shell, because the same machine is used for other
>>>>>purposes, it makes sense to introduce
>>>>>
>>>>>	[core]
>>>>>		umask = 0002
>>>>
>>>>I agree the setting should not be limited to git-shell, but I do
>>>>not think setting "umask" from git configuration is the right
>>>>way either.  For files and directories under $GIT_DIR, maybe
>>>>imposing the policy git configuration file has is OK, but I
>>>>think honoring the user's umask is the right thing for working
>>>>tree files.
>>>
>>>
>>>As we worked out in another thread, you should not have a working directory
>>>when you write-share the repository.
>>>
>>
>>Which thread was that? I see no particular problem with having a working
>>directory in a write-shared repo. The same care has to be taken there as
>>everywhere (pull before push), but that's nothing new.
> 
> 
> It was the thread "How to set up a shared repository".
> 
> Okay, so there you are. You have a write-shared repository with the HEAD 
> checked out. Somebody wants to push to that with different credentials 
> than the user who checked out the files. Do you plainly deny updating the 
> current HEAD?
> 
> If you do, then you better give the pushing user (pun intended) a way to 
> update the checked out files. You can do this by (tadaah) setting the 
> umask to 0002 also for working files.
> 

Ahh. Sorry. We use this method a lot, really, but always only for 
running gitk and archaeology tools to check newly pushed changes, so the 
write-shared repo is only write-shared for remote users, and the local 
one never does a commit. It's perhaps a bit of a weird setup, but it 
lets you get an overview faster than gitweb and works well enough with 
samba. Noted should be that having the repo checked out is merely a 
convenience thing to let one browse the files at leisure. People know to do
	git checkout -f HEAD

whenever they want to dig around.

> Yes, we could find out exactly where writes happen inside GIT_DIR and plug 
> in shared.umask which is only applied in these cases, but I am totally 
> unconvinced that this is worth the hassle. In my cases, I am perfectly 
> helped by a umask which is respected throughout git, and the patch is 
> simple enough to be reviewed in 5 minutes.
> 

But adding

	umask 002

to /etc/bashrc would do exactly the same thing, so why have it a setting 
for the repository only? In my experience, most servers used for hosting 
git repos host *lots* of them (look at master.kernel.org), so a 
server-wide setting really makes much more sense. If the server admin 
can't be bothered you can always change $HOME/.bashrc.

So long as people remember that .bash_profile isn't read for 
non-interactive shells this should do nicely. If they can't remember 
that they won't remember adding the setting to the repository either.

-- 
Andreas Ericsson                   [email-masked]
OP5 AB                             www.op5.se
Tel: +46 8-230225                  Fax: +46 8-230231