Entiendo que Gerrit recibe git commits (usando el gancho de update
tal vez), y los escribe en una ref falsa en alguna parte hasta que se haga la revisión por pares, pero ¿cómo funciona exactamente ese process en términos de la implementación técnica? ¿Y qué commands de Git están involucrados?
Puede hacer reference a la reference mágica refs/for/<branch ref>
que usa el usuario al presionar nuevas confirmaciones .
Para crear nuevos cambios para su revisión, simplemente presione hacia la
refs/for/'branch'
mágica derefs/for/'branch'
usando cualquier herramienta de cliente Git:
git push ssh://sshusername@hostname:29418/projectname HEAD:refs/for/branch
Por ejemplo,
john.doe
puede usar git push para cargar nuevos cambios para la twigexperimental
del proyectokernel/common
, alojado en el server degit.example.com
Gerrit:
git push ssh://john.doe@git.example.com:29418/kernel/common HEAD:refs/for/experimental
Cada nueva confirmación cargada por el cliente de git push se convertirá en un logging de cambio en el server.
El ref refrefs/for/experimental
no es creado realmente por Gerrit, aunque los posts de estado del cliente pueden indicar lo contrario.
Técnicamente, esto es administrado por el cmd-receive-pack .
Invocado por 'git push' y actualiza el repository del proyecto con la información alimentada desde el extremo 'git push'.
Está implementado por gerrit/sshd/commands/Receive.java
, que recibe gerrit/sshd/commands/Receive.java
cambio a través de SSH utilizando el protocolo Git receive-pack .