Permissões são uma praga.
Basicamente, você precisa garantir que todos esses desenvolvedores possam gravar em tudo no repositório git.
Vá para The New-Wave Solution para obter o método superior de conceder a um grupo de desenvolvedores a capacidade de gravação.
A solução padrão
Se você colocar todos os desenvolvedores em um grupo especialmente criado, poderá, em princípio, apenas:
chgrp -R <whatever group> gitrepo
chmod -R g+swX gitrepo
Em seguida, altere umask
para os usuários para 002
que novos arquivos sejam criados com permissões graváveis em grupo.
Os problemas com isso são legião; se você estiver em uma distribuição que assume uma parte umask
de 022
(como ter um users
grupo comum que inclua todos por padrão), isso pode abrir problemas de segurança em outro local. E mais cedo ou mais tarde, algo vai estragar seu esquema de permissões cuidadosamente criado, colocando o repositório fora de ação até você obter root
acesso e corrigi-lo (ou seja, reexecutar os comandos acima).
A solução New-Wave
Uma solução superior - embora menos compreendida e que exija um pouco mais de suporte do SO / ferramenta - é usar atributos estendidos do POSIX. Eu só vim para essa área recentemente, então meu conhecimento aqui não é tão quente quanto poderia ser. Mas, basicamente, uma ACL estendida é a capacidade de definir permissões em mais do que apenas os 3 slots padrão (usuário / grupo / outro).
Então, mais uma vez, crie seu grupo e execute:
setfacl -R -m g:<whatever group>:rwX gitrepo
find gitrepo -type d | xargs setfacl -R -m d:g:<whatever group>:rwX
Isso configura a ACL estendida para o grupo, para que os membros do grupo possam ler / gravar / acessar qualquer arquivo que já esteja lá (a primeira linha); informe também a todos os diretórios existentes que novos arquivos devem ter a mesma ACL aplicada (a segunda linha).
Espero que você esteja no seu caminho.