Os problemas de umask podem ser atendidos com a variável de configuração core.sharedRepository
Git:
( cd /path/to/shared-repository.git &&
git config --bool core.sharedRepository true
)
Sempre que o Git criar um novo arquivo ou diretório, ele se certificará de que os bits do grupo estejam configurados adequadamente (sempre legível, grupo, gravável e executável quando apropriado - mesmo se umask do usuário for excessivamente ampla).
Nota: A configuração core.sharedRepository
aplica-se apenas às entradas feitas pelo próprio Git, portanto não ajudará a definir as permissões das entradas na árvore de trabalho de um repositório não-nu. Você terá que definir sua umask manualmente para isso.
Você pode fazer com que novos arquivos e diretórios sejam de propriedade de grupo do seu grupo git
, definindo o bit setgid nos diretórios (depois de chgrp
o arquivo e diretórios para o grupo apropriado).
chgrp -R git /path/to/shared-repository.git &&
find /path/to/shared-repository.git -type d -exec chmod g=rwxs '{}' \;
Se você estiver criando um novo repositório do zero, você pode apenas chgrp
um diretório vazio e executar git init --shared
nele (o Git definirá core.sharedRepository
e fará o chmod g=rwxs
no GIT_DIR):
mkdir new-shared.git &&
chgrp git new-shared.git &&
git init --bare --shared new-shared.git