Estoy usando git en mi máquina con Windows 7, empujando a una carpeta compartida en una máquina Server 2008. Esto ha funcionado perfectamente durante los últimos 6 meses. Sin embargo, desde ayer, ya no puedo presionar al repositorio remoto. Cada vez que intento, me sale el siguiente:git push falla a menos que haga un gc en el repositorio remoto primero
$ git push
Counting objects: 39, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (23/23), done.
Writing objects: 100% (23/23), 8.42 KiB, done.
Total 23 (delta 15), reused 0 (delta 0)
Unpacking objects: 100% (23/23), done.
error: Couldn't set refs/heads/my-branch
To //my-server/Code/my-project.git
! [remote rejected] my-branch -> my-branch (failed to write)
error: failed to push some refs to '//my-server/Code/my-project.git
Google para el 'no pudo llevar a algunos árbitros' del error da diferentes resultados sobre no haber tirado primero (estoy completamente al día), y no tener el derecho permisos (tengo acceso completo a todo, y puedo crear/eliminar/editar archivos en el repositorio remoto a través del explorador).
Me encontré con esta entrada de blog http://henke.ws/post.cfm/error-failed-to-push-some-refs que menciona que es posible que deba ejecutar algunos comandos de limpieza en el repositorio remoto. Así que corrí git gc en el repositorio remoto:
$ git gc
Counting objects: 3960, done.
Compressing objects: 100% (948/948), done.
Writing objects: 100% (3960/3960), done.
Total 3960 (delta 2971), reused 3942 (delta 2964)
y he aquí, puedo empujar de nuevo!
$ git push
Counting objects: 39, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (23/23), done.
Writing objects: 100% (23/23), 8.42 KiB, done.
Total 23 (delta 15), reused 0 (delta 0)
Unpacking objects: 100% (23/23), done.
To //my-server/Code/my-project.git
8153afd..1385d28 my-branch -> my-branch
El problema, sin embargo, es que ahora tengo que correr un GC en el repositorio remoto cada vez que quiero hacer un empuje. Si no lo hago, aparece el error "Falló el envío de algunas referencias" nuevamente.
Entonces, ¿por qué mi repos tan arrestado? ¿Cómo puedo solucionar el problema de forma permanente?
No tengo ni idea de Windows, así que es una toma en la oscuridad, pero ¿has revisado los permisos en el servidor? Tal vez, al ejecutar la recolección de basura solo está reescribiendo archivos con sus permisos. – sudarkoff
hav u intentado usar git push origin –
permisos parecen como un candidato probable, pero he comprobado y verificado ellas doble, así como quitar y volver a aplicar permissiosn de acceso total, retirado y vuelto a aplicar mi grupo, etc. –