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 umaskpara os usuários para 002que 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 umaskde 022(como ter um usersgrupo 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 rootacesso 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.