Não consigo encontrar a fonte de volta, mas usar setgid
para resolver esse problema para repositórios git simples, que suponho ser seu caso, está obsoleto e pode causar problemas em alguns casos.
O Git pode cuidar de tudo isso através do core.sharedRepository
flag. Eu tive o mesmo problema e resolvi da seguinte forma:
Assumindo que repogroup
é seu grupo e você tem cd
no diretório do repo:
Primeiro altere o sinalizador compartilhado para group
:
git config core.sharedRepository group
Observação: aqui você deve usar a palavra-chave group
, não o nome do grupo.
Isso é equivalente a criar o repositório bare com a opção --shared=group
.
Em seguida, altere o grupo para todo o repositório:
chgrp -R repogroup .
Para garantir que os diretórios existentes sejam graváveis em grupo ( g+w
),
e os executáveis existentes também se tornam executáveis de grupo ( g+X
)
você também precisa:
chmod -R g+wX .
Depois de fazer isso, o git homenageará o shared=group
flag e cuidará das permissões do grupo a seguir, tanto para arquivos novos quanto para existentes, para que você nunca precise novamente de umask
ou chgrp
.
Vou colocar a fonte em um comentário, se eu encontrá-lo de volta.