git desempaquetar error al presionar a gerrit

Al presionar una nueva twig en un server Gerrit encontramos el siguiente error:

[email protected]:~/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://[email protected]/repository ! [remote rejected] landingpage -> landingpage (n/a (unpacker error)) error: failed to push some refs to 'ssh://[email protected]/repository' 

Intentamos copyr el object de tree 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: [email protected] 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?

Presionando con argumento --no-thin funciona como una solución para mí:

 git push --no-thin omnigerrit HEAD:refs/for/android-4.4 

¿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 tree sha1 ya existe en el server, no lo enviará de nuevo, pero gerrit desea search el tree sha1 asociado con el commit sha1 en el package 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.

mi caso

También me encuentro con este problema, y ​​esto lleva mucho time solucionar este problema.

Primero, veo una información de error en el logging 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 object 613fd2557fba30aff2dbd51c3807cc57561bab08?

Luego uso git review -l para search 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 object?

La razón es que mi colega me dice que el proyecto de neutrones usará un nuevo repository para replace 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 database gerrit.

Como arreglarlo

Inicie session en su reviewdb sql y encuentre este logging:

Primero, asegúrese de que este sea el que queremos modificar:

 select * from changes where change_id=1974\G; 

Luego actualiza este logging:

 update changes set open='N',status='A' where change_id=1974; 

Acabo de encontrar este error también.

En mi caso, estaba intentando enviar una confirmación modificada donde ninguno de los files había cambiado desde la última vez que se presionó el mismo compromiso. Literalmente acababa de modificar el post de compromiso para el cambio e intenté volver a presionarlo. No se modificaron los files como parte de la confirmación.

Mi impulso fue rechazado con el mismo post de error que publicó.

Parecía que a Gerrit no le gustaba un empuje sin más cambios que el post de compromiso modificado.

Literalmente hice un cambio de un carácter en un file, agregué el file, enmendé el compromiso otra vez y presioné, y el impulso tuvo éxito.

Estoy usando git == 1.8.4.2

Tuve este problema hoy e intenté todas las sugerencias. Finalmente, la solución fue muy simple:

  1. Cambiar a otra twig (por ejemplo, desarrollar).
  2. Tire del repository remoto
  3. Vuelve a tu nueva twig y presiona.

Con un poco de suerte, funcionará ahora.

Hoy me encontré con este problema y no estaba usando git> 1.8.4.2. Estoy en Gerrit 2.7.

Después de alnetworkingedor de 5 minutos de frustración, decidí cambiar a la versión local de la twig 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é.

Acabo de llegar con este problema ahora, y mi caso es: Some a git init y empujar una nueva twig (es decir, esta twig no está relacionada con ninguna revisión en origen git en gerrit) a un proyecto git en gerrit . Lo bash 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 repository y copyndo 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.

    Intereting Posts