Por que toda vez que eu executo um git pull
no meu servidor ativo, o proprietário dos arquivos é alterado? Eu continuo fazendo manualmente um chown john:john index.php
.
O que preciso alterar para que, quando fizer um git pull
, o proprietário dos arquivos seja ou permaneça automaticamente john
?
john
proprietário do diretório atual?git pull
?Respostas:
Quando você usa
git pull
(que é equivalente agit fetch; git merge
), o git atualiza os 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. O mais fácil é provavelmente adicionar
post-update
ganchos (em seu.git/hooks
diretório) para chamar automaticamentechown john:john . -R
após mesclar / puxar ( consulte a solução SO por exemplo ).As soluções alternativas são:
git pull
como usuário john em vez de root (isso exigirá permissões de gravação para john no diretório .git).git pull
dentro dopost-receive
gancho do repositório simples).fonte
git fetch
como root e depoisgit merge
como usuário john? John ainda precisará de permissões de gravação para o.git
diretório?git fetch
como root, novos arquivos em .git / objects` podem ter root como proprietário.git merge
como o usuário john tentará (na maioria das vezes) sobrescrever pelo menos.git/index
e.git/HEAD
(que pode ser excluído / criado a cada alteração que suponho), e escrever alguns arquivos.git/objects/
. + quaisquer novos arquivos no seu diretório de trabalho. Talvez haja exceções com a mesclagem de avanço rápido, por exemplo.