git desempaquetar error al presionar a gerrit
push unpack (8)
Al presionar una nueva rama en un servidor Gerrit encontramos el siguiente error:
de@roma:~/git-hate/www$ git push origin landingpage
Counting objects: 149, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (73/73), done.
Writing objects: 100% (111/111), 2.77 MiB, done.
Total 111 (delta 68), reused 80 (delta 38)
remote: Resolving deltas: 100% (68/68)
error: unpack failed: error Missing tree 30c4809ade0b4b0c81cb7f882450774862b82361
fatal: Unpack error, check server log
To ssh://user@git-server/repository
! [remote rejected] landingpage -> landingpage (n/a (unpacker error))
error: failed to push some refs to ''ssh://user@git-server/repository''
Intentamos copiar el objeto de árbol mencionado al git remoto de forma manual sin éxito.
En el lado de Gerrit obtenemos un stacktrace:
[2013-05-16 13:43:42,753] ERROR com.google.gerrit.sshd.BaseCommand : Internal server error (user de account 1000000) during git-receive-pack ''/repository''
com.google.gerrit.sshd.BaseCommand$Failure: fatal: Unpack error, check server log
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:157)
at com.google.gerrit.sshd.AbstractGitCommand.service(AbstractGitCommand.java:106)
at com.google.gerrit.sshd.AbstractGitCommand.access$000(AbstractGitCommand.java:34)
at com.google.gerrit.sshd.AbstractGitCommand$1.run(AbstractGitCommand.java:72)
at com.google.gerrit.sshd.BaseCommand$TaskThunk.run(BaseCommand.java:430)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:471)
at java.util.concurrent.FutureTask$Sync.innerRun(FutureTask.java:334)
at java.util.concurrent.FutureTask.run(FutureTask.java:166)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.access$101(ScheduledThreadPoolExecutor.java:165)
at java.util.concurrent.ScheduledThreadPoolExecutor$ScheduledFutureTask.run(ScheduledThreadPoolExecutor.java:266)
at com.google.gerrit.server.git.WorkQueue$Task.run(WorkQueue.java:337)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
at java.lang.Thread.run(Thread.java:636)
Caused by: java.io.IOException: Unpack error on project "repository":
AdvertiseRefsHook: org.eclipse.jgit.transport.AdvertiseRefsHookChain@7047125class org.eclipse.jgit.transport.AdvertiseRefsHookChain
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:156)
... 13 more
Caused by: org.eclipse.jgit.errors.UnpackException: Exception while parsing pack stream
at org.eclipse.jgit.transport.ReceivePack.service(ReceivePack.java:202)
at org.eclipse.jgit.transport.ReceivePack.receive(ReceivePack.java:142)
at com.google.gerrit.sshd.commands.Receive.runImpl(Receive.java:98)
... 13 more
Caused by: org.eclipse.jgit.errors.MissingObjectException: Missing tree 30c4809ade0b4b0c81cb7f882450774862b82361
at org.eclipse.jgit.transport.BaseReceivePack.checkConnectivity(BaseReceivePack.java:996)
at org.eclipse.jgit.transport.BaseReceivePack.receivePackAndCheckConnectivity(BaseReceivePack.java:756)
at org.eclipse.jgit.transport.ReceivePack.service(ReceivePack.java:167)
... 15 more
Gente: ¿alguna idea de qué hacer?
¿Estás usando git> 1.8.4.2?
Encontré incompatibilidad entre git 1.8.4.3+ y Gerrit 2.6, debido a https://github.com/git/git/commit/fbd4a7036dfa71ec89e7c441cef1ac9aaa59a315
Con esta mejora, si git descubre que el árbol sha1 ya existe en el servidor, no lo enviará de nuevo, pero gerrit desea buscar el árbol sha1 asociado con el commit sha1 en el paquete cargado.
Parece que no puedo reproducirlo con gerrit 2.8-rc3, no con la última versión de scm-manager. Diría que esto se ha resuelto en jgit, pero todavía no puedo encontrar la versión.
Acabo de encontrar este error también.
En mi caso, estaba intentando enviar una confirmación modificada donde ninguno de los archivos había cambiado desde la última vez que se presionó el mismo compromiso. Literalmente acababa de modificar el mensaje de compromiso para el cambio e intenté volver a presionarlo. No se modificaron los archivos como parte de la confirmación.
Mi impulso fue rechazado con el mismo mensaje de error que publicó.
Parecía que a Gerrit no le gustaba un empuje sin más cambios que el mensaje de compromiso modificado.
Literalmente hice un cambio de un carácter en un archivo, agregué el archivo, enmendé el compromiso otra vez y presioné, y el impulso tuvo éxito.
Estoy usando git == 1.8.4.2
Acabo de llegar con este problema ahora, y mi caso es: Some a git init y empujar una nueva rama (es decir, esta rama no está relacionada con ninguna revisión en origen git en gerrit) a un proyecto git en gerrit . Lo intento de muchas maneras, pero no. Al final, estoy inspirado por la respuesta de @obuseme, sigo esto y soluciono:
git remote add gerrit GERRIT_GIT_PROJECT_URL
git fetch gerrit
And then upload again.
He solucionado este problema volviendo a clonar el repositorio y copiando mis cambios desde el anterior.
Las otras soluciones no funcionaron para mí, excepto que no probé obrienks.
Intenté con git 2.6.1 y con JGit 4.6.1, y uso Gerrit 2.13.1.
Hoy me encontré con este problema y no estaba usando git> 1.8.4.2. Estoy en Gerrit 2.7.
Después de alrededor de 5 minutos de frustración, decidí cambiar a la versión local de la rama a la que intentaba presionar e hice un tirón. Después de eso, mis impulsos comenzaron a funcionar nuevamente, pero no entiendo por qué.
Presionando con argumento --no-thin
funciona como una solución para mí:
git push --no-thin omnigerrit HEAD:refs/for/android-4.4
Tuve este problema hoy e intenté todas las sugerencias. Finalmente, la solución fue muy simple:
- Cambiar a otra rama (por ejemplo, desarrollar).
- Tire del repositorio remoto
- Vuelve a tu nueva rama y presiona.
Con un poco de suerte, funcionará ahora.
mi caso
También me encuentro con este problema, y esto lleva mucho tiempo solucionar este problema.
Primero, veo una información de error en el registro de gerrit:
Internal server error (user newptone account 1) during git-receive-pack ''/neutron.git''
com.google.gerrit.sshd.BaseCommand$Failure: fatal: Unpack error, check server log
......
... Missing unknown 613fd2557fba30aff2dbd51c3807cc57561bab08
¿Cuál es el objeto 613fd2557fba30aff2dbd51c3807cc57561bab08?
Luego uso git review -l para buscar todos los patchset abiertos para este proyecto neutron:
1974 master Add two interfaces for manipulate forwarding individually
Luego, encuentro este parche en el panel de gerrit buscando, hago clic en el enlace y me parece un error:
613fd2557fba30aff2dbd51c3807cc57561bab08 cannot found
Aha, esa es la razón!
Pero, ¿por qué falta este objeto?
La razón es que mi colega me dice que el proyecto de neutrones usará un nuevo repositorio para reemplazar el antiguo, elimino el repo antiguo pero no cerré todos los parches abiertos en gerrit. El parche abierto desaparecerá en el tablero de gerrit, pero aún existe en la base de datos gerrit.
Como arreglarlo
Inicie sesión en su reviewdb sql y encuentre este registro:
Primero, asegúrese de que este sea el que queremos modificar:
select * from changes where change_id=1974/G;
Luego actualiza este registro:
update changes set open=''N'',status=''A'' where change_id=1974;