Gerrit – cómo rechazar el empuje directo para "dominar" pero permitir a otras twigs

Quiero configurar la configuration que se describe a continuación:

  • El usuario registrado no puede enviar sus cambios directamente al máster. Él tiene que impulsar estos cambios para su revisión:

    "maestro de origen de git push": debe ser rechazado por Gerrit (origen = Gerrit)

    "git push origin HEAD: refs / for / master" – debería ser permitido por Gerrit

  • El usuario registrado puede crear una nueva sucursal. Esta twig se tratará como una copy de security y una forma de cooperación entre dos o más desarrolladores, por lo que no debe revisarse.

    "git push origen xyz_abc" – debería ser permitido por Gerrit

¿Cómo debo configurar Gerrit para lograr dicha funcionalidad?

No hay buenas instrucciones en ninguna parte, así que pensé en documentar los pasos aquí.

1. Navega a la página de acceso de tu proyecto

Proyectos> Lista> your_project> Acceso

2. Editar acceso

Haga clic en el button Editar

3. Agregar reference a refs / heads / *

Esta es la reference para todos los empujes directos. Vamos a configurar quién puede hacer qué en esta ruta.

Haga clic en "Agregar reference" y escriba 'refs / heads / *' (sin comillas)

4. Negar el permiso "Push"

El permiso de Push es el que controla quién puede realizar empujones directos. Los bashs de combinación y los empujones hacia Gerrit seguirán permitidos (véanse las notas a continuación).

  1. Haga clic en "Agregar permiso" y select "Empujar".
  2. Seleccione el grupo de usuarios del que desea denegar push (puede escribir "Usuarios registrados" si desea bloquear a todos)
  3. Elija "NEGAR" en el menu desplegable que aparece una vez que haya agregado su grupo de usuarios

5. Guardar cambios

Y tu estas listo. La configuration final debería verse más o less así:

Configuración finalizada


Nota

Si esto no funciona, asegúrese de tener el permiso de Push establecido en ALLOW en refs / for / refs / * – este es el permiso que permite empujar a Gerrit.

AFAIK puedes configurar permissions para cada repository / proyecto en Gerrit. Por ejemplo, quién puede presionar / quién puede forzar el empuje / quién puede aprobar sus cambios y todo eso. Verifique el enlace a continuación si es útil:

https://git.eclipse.org/r/Documentation/access-control.html

Si hay muchas twigs, puede usar espacios de nombres (p. Ej., Dev / *) para las twigs y establecer el control de acceso para estos espacios de nombres.