Redmine + Gitolite: problema con los permissions del repository y más

Tengo una installation de Redmine en el mismo server que mis repositorys de gitolite.

Para vincular mi repository a mi instancia de Redmine, cloné localmente el repository con el siguiente command:

git clone --bare --local /home/git/repositories/my-repo.git 

Así como cloné con éxito el repository en el server, puedo navegar a través del repository en Redmine, como era de esperar.

El problema es que, tan pronto como lo haga, no puedo enviar nada más al repository remoto de mi máquina local.

Cuando bash

 git push 

Obtengo los siguientes errores:

 Counting objects: 15, done. Delta compression using up to 4 threads. Compressing objects: 100% (7/7), done. Writing objects: 100% (8/8), 695 bytes, done. Total 8 (delta 6), reused 0 (delta 0) fatal: loose object 455f30c5243ec5b5cc698b1e51bdfb23ee6c1b22 (stonetworking in ./objects/45/5f30c5243ec5b5cc698b1e51bdfb23ee6c1b22) is corrupt error: unpack failed: unpack-objects abnormal exit To git@dev.my-host.org:my-repo.git ! [remote rejected] master -> master (n/a (unpacker error)) error: failed to push some refs to 'git@my-host.org:my-repo.git' 

Alguna idea sobre eso?

EDIT # 1

Los loggings de gitolite muestran lo siguiente:

 2012-10-22.10:59:59 13121 ssh ARGV=drgomesp SOC=git-receive-pack 'my-repo.git' FROM=187.65.248.7 2012-10-22.11:00:00 13121 access(my-repo, drgomesp, W, 'any'),-> refs/.* 2012-10-22.11:00:00 13121 trigger,Writable,access_1,ACCESS_1,my-repo,drgomesp,W,any,refs/.* 2012-10-22.11:00:00 13121 pre_git my-repo drgomesp W any -> refs/.* 2012-10-22.11:00:00 13121 system,git,shell,-c,git-receive-pack '/home/git/repositories/my-repo.git' 2012-10-22.11:00:00 13121 END 

Logré ponerlo en funcionamiento apuntando el repository original a Redmine, ya que ambos se sientan en la misma máquina, siguiendo unos sencillos pasos:

  1. Agregue un repository en Redmine con el repository original del repository de gitolite. La ruta sería algo así como /home/git/repositories/my-repo.git .

  2. Inicialmente, Redmine no tiene ningún permiso para leer el repository, por lo que solucionamos el problema añadiendo el usuario de Redmine (generalmente www-data o apache ) al grupo git ejecutando usermod -a -G git www-data (ten en count de la configuration de su server, porque eso puede ser un poco diferente, según cómo haya configurado gitolite.

  3. Cambie la propiedad UMASK en el file .gitolite.rc , del valor pnetworkingeterminado de 0077 a 0022 , el equivalente de 755 (rwxr-xr-x) para directorys y 644 (rw-r--r--) para files.

  4. Para repositorys existentes, puede necesitar ejecutar un chmod -R g+rX

Si aún experimenta los problemas de permissions con Redmine, donde abre un 404 lugar del repository en la pestaña del repository, puede que tenga que ejecutar un chmod -R g+rX en todo /home/git/repositories , para poder hacer Seguro que el usuario de Redmine puede leer todo el path a través de los repositorys.

Si un git repack remote/origin/master no soluciona el problema, verifique su umask ( umask 0002 ) para evitar cualquier problema de permiso de escritura, como se menciona en " git: no se puede enviar (error de desempaquetamiento) ".

Además de eso, " Error de desempaquetado Git-empujando desde el repository desnudo al server de transición " resume todos los otros puntos para verificar.