Error de Git Push: no se puede desvincular el antiguo (permiso denegado)
En el servidor remoto tengo configurado un enlace posterior a la recepción para realizar un checkout de git de mi repositorio:
#!/bin/sh
GIT_WORK_TREE=/var/www/<website> git checkout -f
Pero cuando hago un envío desde mi máquina local al repositorio de git en el servidor, aparece el siguiente mensaje de error:
remote: error: unable to unlink old '<file>' (Permission denied)
Esto aparece muchas veces, un mensaje de error para casi todos los archivos.
Sin embargo, tengo un archivo README.txt que puedo cambiar usando git, aquí están sus permisos:
-rw-r--r-- 1 <serverusername> <serverusername> 2939 Aug 2 10:58 README.txt
Pero otros archivos con exactamente el mismo propietario y los mismos permisos me dan ese error.
En otro repositorio local para otro sitio web, tengo los archivos con el nombre de usuario de mi máquina local como propietario, y cuando los envío al servidor remoto, respeta al propietario de los archivos del servidor remoto y funciona de maravilla.
Obviamente parece un error relacionado con permisos, pero no encuentro la manera de solucionarlo, ¿alguna sugerencia?
Cuando tienes que desvincular un archivo, debes tener permiso 'w' para el directorio en el que se encuentra el archivo, no para el archivo...
sudo chmod -R ug+w .;
Este comando solucionaría el problema. Da permisos de escritura a la carpeta.