quando você usa git pull (que é equivalente a git fetch;git merge ), o git atualizará arquivos sem alterar o proprietário (o git não armazena essas informações). Mas se houver novos arquivos para criar, o usuário atual será definido como o proprietário.
Existe uma solução diferente para resolver isso. É mais fácil adicionar um post-update hooks (no diretório .git/hooks ) para chamar automaticamente chown john:john . -R após mesclar / puxar ( veja que solução SO para um exemplo ).
A solução alternativa é:
- use o usuário john em vez de root (isso exigirá permissões de gravação para john para o diretório .git)
- crie um hook para fazer a implantação, que usará john como user, ou faça o chown após a atualização (assim você terá que fazer
git pulldentro dopost-receivehook do repositório nu)