Agregar revisores a través del post de confirmación

¿Es posible agregar revisores en Gerrit a través de un post de compromiso? Considere este post de compromiso:

component: make foo more bar Foo was not bar enough, this change adds more bar to make foo fit better in baz. Change-Id: I4724e283214e0bfbb85a8e3d8db4971618e2609a Cc: alice@example.com Cc: bob@example.net 

Aquí, alice@example.com y bob@example.net deben agregarse como revisores al presionar a gerrit.

Conozco un especificador de sucursal especial para agregar revisores, pero me gustaría tener algo más automatizado a medida que crea commits. Los cambios son independientes, aunque sería bueno si pudiera agruparlos en una twig temática porque están relacionados.

Hay algunas otras forms de hacerlo.

  1. Simplemente agregue estas líneas a su .git / config

    ["revisión" remota]

    pushurl = ssh: // usuario @ gerrit: 29418 / proyecto

    push = HEAD: refs / for / master

    receivepack = git receive-pack –reviewer reviewer1 –reviewer reviewer2

    Ahora, cuando desee enviar una revisión, simplemente haga: git push review y "reviewer1" y "reviewer2" se agregarán a su patchset.

  2. Creo que también puedes escribir algunos guiones / ganchos para automatizar esto. Después de comprometerse solo grep el Change-id del commit, y úselo con el siguiente command gerrit:

    ssh -p gerrit set-revisores [–project (PROJECT) | -p (PROJECT)] [–add (REVIEWER) … | -a (REVIEWER) …] [-] {COMMIT | CHANGE-ID}

    Ejemplo: ssh -p 29418 gerrit.example.com gerrit set-reviewed -a anuj@example.com Iac6b2ac2

Espero que te ayude 🙂

No es posible configurar revisores por compromiso, estos se aplican por inserción (consulte el manual de git-receive-pack de gerrit ). En lugar de ejecutar git push origin HEAD o git review (suponiendo que el origin sea ​​gerrit remote, y HEAD la twig que desea insert), puede ejecutar lo siguiente para agregar dos revisores para todos los commits nuevos:

 git push origin HEAD:refs/for/master%r=alice@example.com,r=bob@example.com 

Eso se aplica a todos los commits que no es lo que quieres. Debido a las limitaciones anteriores, cambiemos el flujo de trabajo para enviar primero los cambios y luego establecer algunos revisores.


Dado que Gerrit distingue entre Cc (solo envía una notificación por correo) y los revisores (envía un correo, pero también marca al usuario como revisor), modificaré el post de confirmación de la siguiente manera:

 component: make foo more bar Foo was not bar enough, this change adds more bar to make foo fit better in baz. R=alice@example.com R=bob@example.net Change-Id: I4724e283214e0bfbb85a8e3d8db4971618e2609a 

Dado un número de confirmaciones, uno puede seguir los siguientes pasos para agregar revisores por separado para cada confirmación:

  1. Reúna una list de identificaciones de commits (o Change-Id s). Ejemplo que asume la twig principal como base: git rev-list --reverse origin/master..
  2. Para cada ID de confirmación, busque R=... (revisores) en el post de confirmación. El post de compromiso para una confirmación dada se puede encontrar con git show --no-patch --format=%b COMMIT_ID
  3. Si existen revisores para un post de confirmación, agréguelos con el command ssh -p 29418 user@host 'gerrit set-reviewers -a bob@example.net COMMIT_ID' (en lugar de COMMIT_ID , también puede usar el Change-Id que es I4724e283214e0bfbb85a8e3d8db4971618e2609a por ejemplo).

Para realizar los pasos anteriores (junto con la detección automática de la configuration del usuario, el host y el puerto), escribí un script Bash: https://git.lekensteyn.nl/scripts/tree/git/gerrit-add-reviewers

Se recomienda tener un file .gitreview en su repository con un control remoto que apunta a una instancia de Gerrit. Luego ejecute ~/scripts/gerrit-add-reviews origin/master.. desde ese git repo para analizar los posts de confirmación y agregar revisores.

Arreglé un guión donde puede pasar las direcciones de correo electrónico de los revisores que desea agregar y se ocupará del rest por usted. Incluso puede encontrar confusamente en committers existentes (correo electrónico y nombre), para que no tenga que escribir mucho.

https://gist.github.com/andersonvom/924fdc5f92aefa5eca9c

Solo llámalo usando:

 $ greview [<rev1> [<rev2> [...]]] 

Combina los events de transmisión gerrit y los revisores, puedes hacer esto.

En realidad, primero necesita get el estado de CL (crear, actualizar y …), luego ejecutar la acción correspondiente, como agregar revisores, incluso enviar CL.

  1. obtén events gerrit del command " gerrit stream-events ".

  2. analizar el evento de formatting JSON como cada línea. En el evento JSON, podemos get el proyecto, la sucursal, el Id. De cambio, el número CL, el sujeto de Confirmar (no toda la confirmación) y mucha información.

si realmente necesita un post de compromiso completo, la " consulta gerrit " es útil.

filtre el "patchset-created", el número de patchSet es 1 (si solo desea hacer esto para el nuevo patchSet), analice el asunto de la confirmación y obtenga los revisores como lo pnetworkingefinió.

  1. utilice el command " gerrit set-reviewed " para agregar un revisor.

como mi práctica, use Python, todo esto es fácil.

Su flujo es como un pequeño Jenkins.