2011-09-19 21 views
5

Usando Gerrit es fácil de combinar accidentalmente código inestable de la rama convertirse en la rama estable:git/Gerrit prevenir el desarrollo de la rama que se fusionaron en rama estable/prueba

$ git checkout develop
$ commit
$ git push origin HEAD:refs/for/stable

En Gerrit ISN' t muy claro que el cambio propuesto proviene de la rama de desarrollo y debe fusionarse en la rama estable. ¿Hay alguna manera de evitar que esta fusión ocurra, ya sea en git o en Gerrit?

Actualización: Por ahora usamos un comando personalizado para empujar a Gerrit que encuentra la última rama de origen se basa en y sólo permite empujar a esa rama.

+0

Marque esta pregunta http://stackoverflow.com/questions/527833/how-to-configure-git-to-avoid-accidental-git-push –

+0

La solución a esa pregunta impide que se presione. Me gustaría presionar, pero quiero evitar que el desarrollo (o cualquier rama creada desde el desarrollo) sea empujado a refs/for/testing o refs/for/stable – Taco

+1

. Así que tienes que crear un gancho de pre-recepción personalizado para tu repositorio remoto –

Respuesta

1

Actualmente no hay opciones en el software que eviten que cometa este tipo de error.

Hay, sin embargo, algunas cosas que podría hacer:

  • formar a las personas, por lo que siempre comprobar el nombre de la rama mientras se realiza una revisión
  • creó una categoría "empujó para corregir rama" (howto here) con opciones como +1 "Corregir bifurcación", 0 "Sin puntuación", -1 "Sucursal incorrecta", por lo que el revisor debe confirmar formalmente que verificó el nombre de la sucursal
  • configurar una herramienta de integración continua para automáticamente revisar y calificar la categoría antes mencionada (Jenkins tiene un plugin Puede usar)

¿Compartiría usted el comando personalizado que usa para presionar a gerrit, por favor?

0

Un enfoque podría ser algo como esto:

usuarios segregar grupo

  • Peticionario - Todos los desarrolladores que le estaría esperando que se comprometan a 'desarrollar' y no en 'principal'
  • Grupo de integradores: desarrolladores con privilegios que pueden enviar y fusionar a 'principal', crear más sucursales si es necesario.

En 'git', solo se permite el acceso de inserción a los miembros del 'Grupo de integradores' (descrito anteriormente).

Descargo de responsabilidad: No tengo la experiencia de configuración/rol de administrador de Gerrit/Git, así que honestamente no tengo idea de cómo 'git' podrá recoger información sobre a qué grupo pertenece cualquier usuario (en mi humilde opinión esto aún podría lograrse manualmente)

0

Debe configurar controles de acceso específicos en Gerrit para su rama de "desarrollo" de ese repositorio.

configuración como esta:

Reference: refs/for/refs/heads/develop 
Push: Allow: <group> 

Pero no así:

Reference: refs/for/refs/heads/* 
Push: Allow: <group> 

De esta manera su <group> sólo puede empujar para su revisión en "refs/a/desarrollo", no "árbitros/for/stable "o cualquier otra rama.

Cuestiones relacionadas