Git comete un error de permissions cuando trabaja en un host remoto

Intento que mi website esté bajo control de versiones. Trabajo directamente en el server con ExpanDrive, que utiliza MacFUSE para montar la connection SFTP como un volumen local al que puedo acceder con el terminal y otras aplicaciones locales.

De todos modos, todo va bien hasta que bash comprometerme, cuando recibo este post:

fatal: exec .git/hooks/pre-commit failed. 

Si bash ejecutar el command exec manualmente, veo esto:

 -bash: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: Permission denied -bash: exec: /Volumes/1&1 Internet/website/.git/hooks/pre-commit: cannot execute: Unknown error: 0 

He intentado usar mi cliente SFTP para dar todo lo que está bajo el directory .git completo (777) permissions, y todavía no tuve suerte. ¿Alguien sabe de algo más que pueda probar?

Al dar todo en el directory .git completo (777) permissions, ha habilitado todos los scripts de ejemplo que se envían con Git en .git / hooks, normalmente con sus bits de ejecución desactivados. Cuando intentas commit la secuencia de commands ahora ejecutable precompra la secuencia de commands intenta ejecutar para formatear la confirmación como un parche.

A less que esto sea lo que estás tratando de hacer, te sugiero que chmod / git / hooks / * sea 644, para que las secuencias de commands de gancho no se ejecuten.

Editar – Restablecer los permissions de enlace le devuelve la condición donde primero tuvo el problema. Luego intente la confirmación con el indicador --no-verify , que se supone que omite el enlace precompromiso (y también algunas comprobaciones menores en el post de confirmación). Esto puede ser una solución alternativa, pero todavía no veo por qué tuvo el problema inicial. El código parece muy sencillo: no veo cómo podría intentar ejecutar ese enlace si no está habilitado. Si eso falla de la misma manera, entonces pensaría que el sistema ExpanDrive / MacFuse no está manejando los permissions apropiadamente (pero eso es bastante improbable).

Terminé configurando un entorno de desarrollo local en mi computadora portátil, estoy renunciando a intentar usar git a través de ExpanDrive. Después de pasar más time con él, parece que estas herramientas no estaban destinadas a funcionar juntas.

Creo que las versiones recientes de git utilizan un mecanismo diferente a los permissions para habilitar los enganches. Por lo tanto, si está utilizando una versión reciente, puede eliminar todo del directory .git / hooks (o moverlo a otro lugar) y ver si ese es el problema.

Yo tuve el mismo problema. Estoy desarrollando y probando en un server de desarrollo separado (devserver), mientras mi IDE (PhpStorm) está en mi Macbook. Estoy usando ExpanDrive para montar la raíz web del devserver a través de SFTP (SSH) en mi Mac. Cuando traté de usar Git en mi Mac, recibí errores sobre los files SHA1 y otras cosas.

Lo he resuelto de esta manera:

He movido el .git dir de la unidad montada en /Volumes/devserver a una location en mi directory de inicio en mi Macbook. Y después de eso, hice un enlace simbólico de la location anterior a la nueva location del directory .git . Tuve que usar ../../Users/jeroen/### porque de lo contrario el enlace no era correcto.

Ejemplo para mover y hacer el enlace simbólico:

 cd /Volumes/devserver mkdir -p /Users/$USER/Code/devserver mv .git /Users/$USER/Code/devserver/.git ln -s ../../Users/$USER/Code/devserver/.git ./git git status 

La primera vez que utilizas el command "git" puede llevar un time, porque Git está reconstruyendo algunos cachings.