2011-07-29 21 views
9

Al utilizar un repositorio compartido (core.sharedRepository = group) nos encontramos con algunos problemas con git creando archivos de solo lectura (permisos de 444). No importa qué elementos de configuración de git entreveramos allí siempre parece que hay algunos metadatos de solo lectura creados en el lado del servidor cuando pulsamos. Estos archivos están en .git/(u objetos/en un repositorio simple).¿Por qué git está creando archivos de solo lectura (444)?

¿Realmente no necesita volver a escribir en estos archivos (independientemente de las operaciones de git que realice)? Pueden ser representativos de commit deltas, por lo tanto, realmente no deberían modificarse, pero esperaba que alguien pudiera aclarar esto.

Para los curiosos, las líneas relevantes parecen ser 856 y 867 de paquete integrado/paquete de índice.c en git.

+0

umask en el ENV ¿configurado correctamente? – sleeplessnerd

+1

Sí, la umask de ENV es 007. – Matthew

Respuesta

13

Esos archivos son parte de la base de datos de objetos, que realmente es de solo lectura. No importa lo que haga con Git, no puede cambiar el contenido de un objeto específico una vez que se haya creado.

Tenga en cuenta que si realiza una copia a cabo una confirmación y crear uno nuevo en su lugar, que va a crear un nuevo objetocon un identificador nuevo y nuevos contenidos. Git eventualmente realizará su recolección de elementos no utilizados para eliminar los objetos antiguos sin referencia.

+0

Gracias, Greg. Esperaba algunas referencias a la documentación. ¿Esto se informa en cualquier lugar en los documentos de Git? – Matthew

+1

@Matthew: Aquí hay una referencia en la wiki de Git: https://git.wiki.kernel.org/index.php/Git#Implementation Puede buscar otras buscando "base de datos de objetos git inmutables". –

+0

Gracias, Greg. Buen consejo. – Matthew

Cuestiones relacionadas