We have a shared bare git repository on AFS, which our developers
pull from and push to from their local repositories. Some developers
access the bare repository directly over AFS and others use ssh.
Every couple of months, all of the two-character directories under
the objects directory disappear. Afterwards, most pushes fail with an
error like this:

error: unable to create temporary sha1 filename ./objects/fb:
Permission denied

Stracing git revealed that it successfully recreated the ./objects/fb 
and then failed to chmod() it. It failed because it tried to set the
S_ISGID bit, which mere mortals cannot do on AFS. Manually recreating 
all of these directories solves the problem. 

I took a quick look at the git source and it appears git always tries 
to set the S_ISGID on a new directory if core.sharedrepository is 
enabled in the config. I don't know what other effects would result  
from setting core.sharedrepository to 0.

Would it be feasible to allow the setting of S_ISGID to disabled,
apart from modifying core.sharedrepository? Possibly a new config
parameter or detecting if the directory is on AFS?

 -- Jaime Frey

To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to