2012-01-05 14 views
16

El sistema Gerrit solo lo utilizamos varias personas. Una vez que hay un cambio A, y su estado es: "Enviado, fusionar pendiente". La lista de cambios en la página web "abierta". También noté que el cambio tenía una dependencia en otro cambio B (que se abandona el estado).Gerrit Cambiar tiene estado: Enviado, Merge Pendiente, cómo solucionarlo?

  1. ¿Cómo hacer que A aparezca en la página web "Fusionada"?
  2. ¿Cómo hacer que B desaparezca, entonces A no tiene más dependencia de B?
+1

He hecho [una pregunta similar] (http://stackoverflow.com/q/20496959/1469208) y obtuve respuestas un poco más detalladas (útiles para principiantes). – trejder

Respuesta

21

Si el cambio A tiene una dependencia en B, no se puede combinar A hasta que B se fusione. Puesto que ha abandonado B, Gerrit no fusionará automáticamente A.

Lo que tendrá que hacer es modificar A (tal vez usando git rebase) para que ya no dependa de B, y vuelva a enviar el cambio a Gerrit.

+0

¿Entonces cómo hacer que B desaparezca de la página web? – gemfield

+0

Ya has abandonado B. ¿Qué más quieres hacer con él? –

+1

@GregHewgill Creo que lo que quiso decir fue cómo eliminar la entrada de cambio B de Gerrit como si nunca hubiera existido (por lo que no aparece en la interfaz de usuario web de Gerrit en ninguna parte). No creo que sea posible desde la interfaz de usuario web de Gerrit ya que hay un botón de 'Restaurar cambio' en los elementos de cambio abandonados que le permite cambiar el estado de abandono. Si uno todavía quisiera eliminar, podría hacerlo manualmente desde el backend (aunque nunca lo intenté) – Vikram

1

Lo que afirma Greg es correcto, no es posible una fusión automática. Es posible incorporar solo A utilizando la opción "selección de cereza" de Gerrit (esencialmente una fusión manual). Desafortunadamente, esto no eliminará el estado "Merge Pending" de Gerrit. Normalmente escribo un comentario a este efecto, si el Contributor no puede ser molestado con la rebase.

0

Yo tenía el mismo problema de "Enviado, Merge pendiente" sin ningún tipo de dependencia o conflicto. La solución rápida es revisar todos los elementos abiertos y ver si hay algún otro compromiso en el estado "Enviado, Combinar pendiente". Si es así, solo abandónalos a todos.

Luego git commit --men -m "tus comentarios originales" y git push nuevamente, esta vez puedes fusionar tu arreglo.

2

FYI. Tuve el mismo problema de "Enviado, Combinar pendiente" cuando el usuario presiona enviar dos veces en la misma página (hizo doble clic en el botón Enviar). Sucedió en Gerrit 2.11.

error en el registro parece

Caused by: com.mysql.jdbc.exceptions.jdbc4.MySQLIntegrityConstraintViolationException:  Duplicate entry '5173-2-1' for key 'PRIMARY' 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method) 
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57) 

Antes de enviar sólo había 1 comprometerse (cambios en el código). Pero después de presionar dos veces hay 2 commits. El segundo es con el nuevo mensaje de confirmación y el estado "Enviado, Merge Pendiente".

Cuando quité toda la información sobre el segundo cometer:

$ ssh -p 29418 [email protected] gerrit gsql 
gerrit> delete from `patch_set_approvals` where change_id=5173 and patch_set_id=2; 
gerrit> delete from `patch_set_ancestors` where change_id=5173 and patch_set_id=2; 
gerrit> delete from `patch_sets` where change_id=5173 and patch_set_id=2; 

se marcan como integrada por el usuario Gerrit revisión de código.

0

que se enfrentaron a este tema porque me empujó una etiqueta a nombre de la sucursal:

git tag x.y.z HEAD 
git push -f origin x.y.z:master 

Así empuje mejor una rama en cambio,

git tag x.y.z HEAD 
git push -f origin HEAD:master 

De esa manera Gerrit es capaz de combinar de nuevo mis parches pendientes.

0
  1. Abandona tu empuje de Gerrit.

en el terminal:

  1. git log
  2. git reset CABEZA ~ n

donde n es el número de compromisos de arriba en la lista de confirmaciones generado en el terminal del paso 2

  1. git add.
  2. git commit -m "Su mensaje"
  3. git push

ahora combinar sus cometen en Gerrit.

Cuestiones relacionadas