la documentación de Gerrit, en particular la sección "Push changes", explica que se presiona a la "refs/for/'branch'
ref mágico usando cualquier herramienta de cliente Git".
La siguiente imagen está tomada desde the Intro to Gerrit. Cuando presionas a Gerrit, lo haces git push gerrit HEAD:refs/for/<BRANCH>
. Esto lleva sus cambios al área de ensayo (en el diagrama, "Cambios pendientes"). Gerrit en realidad no tiene una rama llamada <BRANCH>
; le corresponde al cliente de git.
Internamente, Gerrit tiene su propia implementación para las pilas Git y SSH. Esto le permite proporcionar los refs "mágicos" refs/for/<BRANCH>
.
Cuando se recibe una solicitud de inserción para crear una referencia en uno de estos espacios de nombres, Gerrit realiza su propia lógica para actualizar la base de datos y luego miente al cliente sobre el resultado de la operación. Un resultado exitoso hace que el cliente crea que Gerrit ha creado la referencia, pero en realidad Gerrit no ha creado la referencia. [Link - Gerrit, "Gritty Details"].
Después de un parche con éxito (es decir, el parche ha sido empujado a Gerrit, [ponerlo en la zona de "cambios pendientes" puesta en escena], revisado, y el examen ha pasado), empuja Gerrit el cambio de los "Cambios pendientes" al "Repositorio autorizado", calculando qué rama insertar según la magia que hizo cuando presionó refs/for/<BRANCH>
. De esta forma, los parches revisados con éxito se pueden extraer directamente de las ramas correctas del Authoritative Repository
.
Esta es una hermosa respuesta. Gracias :) – Shrayas
Por curiosidad, ¿qué pasa realmente si solo haces algo como "origen de git push"? Lo probé y no puedo ver el cambio en ningún lado, de ahí la pregunta. Pero sí existe en mi registro local, naturalmente. –
@Pintolaranja Hice lo mismo de manera accidental. Tienes razón, Gerrit "maneja" tal situación, pero no crea ningún cambio. Entonces, en realidad, no lo maneja en absoluto. Lo que realmente me molesta, ya que esto es realmente estúpido. ¿Por qué permitir que el usuario confirme algo que Gerrit no puede manejar correctamente? – trejder