2011-06-19 20 views
16

Sólo para un archivo, estoy recibiendo el siguiente error:git: No se puede archivo de índice - Permiso denegado

error: unable to write sha1 filename /opt/www/.git/objects/3f/ce3587c54a8be14c69b08c6b01f94949b11b47: Permission denied 

error: wp/wp-admin/css/theme-install.dev.css: failed to insert into database 
fatal: unable to index file wp/wp-admin/css/theme-install.dev.css 

Miré permisos en el archivo en cuestión, la .git objetos de directorio en cuestión y .git sí mismo. Puedo agregar cualquier otro archivo excepto este. Pude stat/r/w/touch el archivo y tocarlo no sirvió. Los permisos son correctos.

¿Esto es un error loco?

+1

¿Puedes 'tocar' nuevos archivos en' .../objects/3f', o si no, ¿cuál es su modo? ¿''/Objects/3f/ce3 ... 'ya existe, y si es así, ¿cuál es su modo? ¿Podría la partición donde '/ opt' estar llena? –

+0

Tocar está bien, y el archivo no existe. – h4xnoodle

+0

también me pasó en este caso: tener un archivo llamado "imafile" > eliminar este archivo> crear un directorio llamado "imafile"> poner archivos en = no se puede confirmar porque "No se puede encontrar el índice" – Flozza

Respuesta

9

Si examina el código fuente de Git (sha1_file.c, la función move_temp_to_file()) se ve como Git está fallando a cambiar el nombre de un archivo temporal denominado /opt/www/.git/objects/3f/tmp_obj_XXXXXX (donde XXXXXX es de seis caracteres aleatorios) a /opt/www/.git/objects/3f/ce3587c54a8be14c69b08c6b01f94949b11b47. Esto puede suceder si no tiene permiso para eliminar archivos en /opt/www/.git/objects/3f.

Algunas cosas para probar:

  • Si hay varios usuarios que acceden al repositorio Git, es posible que tenga que ejecutar algo así como git config core.sharedRepository 0664 (ver git help config para más detalles) para asegurar que los directorios de nueva creación y los archivos tienen permisos adecuados para todos usuarios del repositorio.
  • Intente ejecutar rm -f /opt/www/.git/objects/3f/tmp_obj_* y vea si eso hace que el problema desaparezca.
  • ver si se puede reproducir el problema fuera de Git de la siguiente manera:

    mkdir -p /opt/www/.git/objects/3f 
    cd /opt/www/.git/objects/3f 
    rm -f tmp_obj_* ce3587c54a8be14c69b08c6b01f94949b11b47 
    echo "testing" >tmp_obj_abcdefg 
    mv tmp_obj_abcdef ce3587c54a8be14c69b08c6b01f94949b11b47 
    rm -f tmp_obj_abcdefg 
    

    Asegúrese de ejecutar los anteriores comandos el mismo usuario que experimenta el error.

  • Pruebe recursivamente chown ing y chmod ing el directorio de objetos.
+0

Por una razón desconocida , De hecho tenía algunos objetos propios por root. – Gra

5

No tiene permiso para escribir en /opt/www/.git/objects/3f.

La solución más rápida es usar el comando sudo para ejecutar su comando con privilegios de administrador.

sudo <Your git command>

lo resolvió para mí.

+1

funcionó para mí ... Creo que lo que lo causó en mi caso fue abortar a la mitad de un commit anterior –

31

Si está utilizando Visual Studio o algo similar que está generando el archivo mdf, simplemente cierre VS & vuelva a intentar su comando git. Esta vez debería funcionar.

+2

tú el hombre, mi amigo – kiiiiNNNNNNNNNyyyy

Cuestiones relacionadas