git push gerrit unpack

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:

  1. Cambiar a otra rama (por ejemplo, desarrollar).
  2. Tire del repositorio remoto
  3. 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;