2011-08-23 13 views
8

Me encontré con un problema que me llevó mucho tiempo encontrar una solución y todavía no lo consigo.¿Cómo preservar el permiso de archivo en git?

El problema que tuve es 'DatabaseError:' intento de escribir una base de datos de solo lectura 'cuando traté de implementar mi sitio web a través de git a un hosting de Django.

Parece que git cambiará el permiso de mis archivos, del 777 al 755. Pero cada vez que comprometo mi proyecto, este cambio persistirá. Sin embargo, todavía tengo que escribir algo en mi base de datos (base de datos sqlite).

¿Alguien tiene alguna sugerencia para configurar mi git para conservar el modo de permiso en cada confirmación?

Respuesta

11

En resumen, no se puede.

En más tiempo, hay proyectos como etckeeper que pueden hacerlo automáticamente, o puede escribir un pequeño script de gancho que arreglará los permisos (que es probablemente cómo lo haría).

Por ejemplo, si se compromete algo esto:

#!/bin/sh 
chmod -R XXX file_or_directory/ 

Para, por ejemplo, scripts/fix_permissions/, a continuación, ejecutarlo como un gancho post-receive por simlinking en .git/hooks/post-receive en el servidor.

+0

Tenga en cuenta que si probablemente debería utilizar un enganche posterior a la recepción para actualizar los archivos desde los que se ejecuta su servidor, ya que ejecutar algo directamente desde un repositorio de Git en un servidor suele ser una mala idea. – Amber

+0

Eso es muy cierto. Me gusta mantener mis ganchos en el repositorio, para que estén versionados junto con todo lo demás, pero eso es porque trabajo en pequeños proyectos donde todos los desarrolladores tienen acceso raíz a los servidores de todos modos ... Pero ciertamente abre un agujero de seguridad potencial. –

Cuestiones relacionadas