2012-10-07 225 views
8

Tengo un error de git: "permiso insuficiente para agregar un objeto a la base de datos del repositorio" cada vez que hago "git push origin master".
Intenté la solución que se describe aquí: http://parizek.com/2011/05/git-insufficient-permission-for-adding-an-object-to-repository-database-objects/ pero funciona solo hasta la próxima ...
¿Existe alguna solución permanente?Git: permiso insuficiente para agregar un objeto a la base de datos del repositorio

$ git push origin master 
Counting objects: 5, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (3/3), done. 
Writing objects: 100% (3/3), 1.19 KiB, done. 
Total 3 (delta 2), reused 0 (delta 0) 
error: insufficient permission for adding an object to repository database ./objects 
fatal: failed to write object 
error: unpack failed: unpack-objects abnormal exit 
To ssh://[email protected]/p/project/code 
! [remote rejected] master -> master (n/a (unpacker error)) 
error: failed to push some refs to 'ssh://[email protected]/p/project/code' 

$ git config core.sharedRepository true 

$ git push origin master 
Counting objects: 5, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (3/3), done. 
Writing objects: 100% (3/3), 1.19 KiB, done. 
Total 3 (delta 2), reused 0 (delta 0) 
error: insufficient permission for adding an object to repository database ./objects 
fatal: failed to write object 
error: unpack failed: unpack-objects abnormal exit 
To ssh://[email protected]/p/project/code 
! [remote rejected] master -> master (n/a (unpacker error)) 
error: failed to push some refs to 'ssh://[email protected]/p/project/code' 

$ sudo chmod -R g+ws * 
$ sudo chgrp -R andrey * 
$ git push origin master 
Counting objects: 5, done. 
Delta compression using up to 2 threads. 
Compressing objects: 100% (3/3), done. 
Writing objects: 100% (3/3), 1.19 KiB, done. 
Total 3 (delta 2), reused 0 (delta 0) 
remote: <Repository /git/p/project/code.git> refresh queued. 
To ssh://us[email protected]/p/project/code 
    acd82d2..f401c90 master -> master 

Esta es Ubuntu que utilizo: 12.04.1, y git: 1.7.9.5

+1

¿Por qué haces esto? Use github o gitorious o una solución que ya haya resuelto este problema. –

+1

¿Es posible utilizar estas herramientas si almaceno código en source forge? – rodnower

+2

@Stefan Kendall: ¿Tal vez el usuario está utilizando un proyecto Git interno de la compañía, y él o su empresa no quiere mover su código a un servicio externo del que no tienen control? –

Respuesta

4

Como se mencionó en "Error pushing to GitHub - insufficient permission for adding an object to repository database", es necesario, además de la configuración de git config, a:

  • definido antes el umask para todas sus repos: umask 002 (por lo que en su lado del servidor)
  • continuación, establezca el grupo GIT a rw como se menciona en su solución, todavía en el lado del servidor.
+0

OK, parece que funciona. Pongo el comando umask en el archivo .bashrc también. – rodnower

+0

¿Qué hace 'umask 002/var/git/repositories'? 'umask' shell built-in no funciona de esa manera. – wRAR

+0

@wRAR verdadero, eliminé el directorio en ese comando. – VonC

0

Eso suele suceder cuando alguien se compromete a hacer git mientras abuchea a la raíz. Los archivos .git/* creados en ese proceso están protegidos contra cambios externos.

chmod -R 777 .git 

es una solución rápida.

Cuestiones relacionadas