Pourquoi chaque fois que j'exécute un git pull
sur mon serveur en direct, le propriétaire des fichiers est changé? Je continue de faire manuellement un chown john:john index.php
.
Que dois-je changer pour que, lorsque je le fais git pull
, le propriétaire des fichiers soit automatiquement ou reste john
?
john
propriétaire du répertoire actuel est-il?git pull
?Réponses:
Lorsque vous utilisez
git pull
(ce qui équivaut àgit fetch; git merge
), git mettra à jour les fichiers sans changer de propriétaire (git ne stocke pas ces informations). Mais s'il y a de nouveaux fichiers à créer, l'utilisateur actuel sera défini comme propriétaire.Il existe différentes solutions pour résoudre ce problème. Le plus simple est probablement d'ajouter un
post-update
hook (dans votre.git/hooks
répertoire) pour appeler automatiquementchown john:john . -R
après fusion / pull ( voir cette solution SO pour un exemple ).Les solutions alternatives sont:
git pull
tant qu'utilisateur john au lieu de root (cela nécessitera des autorisations d'écriture sur john pour le répertoire .git).git pull
à l'intérieur dupost-receive
hook du repo nu).la source
git fetch
tant que root puis engit merge
tant qu'utilisateur john? John aura-t-il toujours besoin d'autorisations en écriture pour le.git
répertoire?git fetch
en tant que root, les nouveaux fichiers dans .git / objects` peuvent avoir root en tant que propriétaire.git merge
comme l'utilisateur john tentera (la plupart du temps) d'écraser au moins.git/index
et.git/HEAD
(qui pourrait être supprimé / créé à chaque changement, je suppose), et d'écrire quelques fichiers.git/objects/
. + tout nouveau fichier dans votre répertoire de travail. Il y a peut-être des exceptions avec la fusion rapide par exemple.