¿Por qué cada vez que ejecuto un git pull
en mi servidor en vivo, se cambia el propietario de los archivos? Sigo haciendo manualmente a chown john:john index.php
.
¿Qué necesito cambiar para que, cuando haga un git pull
, el propietario de los archivos sea automáticamente o se quede john
?
john
el propietario del directorio actual?git pull
?Respuestas:
Cuando usa
git pull
(que es equivalente agit fetch; git merge
), git actualizará los archivos sin cambiar de propietario (git no almacena esa información). Pero si hay nuevos archivos para crear, el usuario actual se establecerá como el propietario.Hay una solución diferente para resolver esto. Lo más fácil es probablemente agregar un
post-update
gancho (en su.git/hooks
directorio) para llamar automáticamentechown john:john . -R
después de fusionar / extraer ( vea esa solución SO para ver un ejemplo ).Las soluciones alternativas son:
git pull
como el usuario john en lugar de root (eso requerirá permisos de escritura en john para el directorio .git).git pull
dentro delpost-receive
enlace del repositorio desnudo).fuente
git fetch
como root y luegogit merge
como usuario john? ¿John todavía necesitará permisos de escritura para el.git
directorio?git fetch
como root, los archivos nuevos en .git / objects` pueden tener root como propietario.git merge
como el usuario john (la mayoría de las veces) intentará sobrescribir al menos.git/index
y.git/HEAD
(lo que podría ser eliminado / creado en cada cambio, supongo), y escribir algunos archivos.git/objects/
. + cualquier archivo nuevo en su directorio de trabajo. Tal vez hay excepciones con la combinación de avance rápido, por ejemplo.