Las sucursales deberían funcionar bien, según mi experiencia de usarlas en revisiones previas a los compromisos en trabajos anteriores.
Tenga en cuenta que en ese entonces, estábamos usando revisiones previas a la confirmación solo para parches críticos para el código de candidato de lanzamiento de producción, por lo que no había muchas ramas (los cambios de rutina se pasaron a través de revisiones posteriores a la confirmación).
Como parece que va a utilizar revisiones previas a la confirmación para todos los cambios, es posible que deba administrar una gran cantidad de sucursales. Si espera que el desarrollador haga un cambio "revisable" por semana en promedio, terminará teniendo aproximadamente 50 sucursales cada año por cada desarrollador en equipo. Si está utilizando porciones de trabajo más pequeñas, como las que toman 1, 2, 3 ... días, multiplique 50 por 2, 3, 5 ... en consecuencia.
A continuación hay algunas otras consideraciones a tener en cuenta si lo desea de la mejor manera .
1. manejo de casos cuando la revisión retrasada bloquea el código necesario para otros miembros del equipo
Establezca, monitoree y resuelva conflictos relacionados con los plazos de revisión de código. Según mi recuerdo de las revisiones previas a la confirmación de los cambios de rutina que traté en uno de los proyectos anteriores, el plazo razonable es de aproximadamente 3 días y el tiempo para comenzar a preocuparme es cuando la revisión no se completa más de 1 día después del envío.
A modo de comparación, en las revisiones posteriores al compromiso, estos requisitos son mucho más relajados (estoy usando el plazo de 2 semanas y empiezo a preocuparme después de 1 semana), pero dado que apunta a las revisiones previas al compromiso, esto probablemente no sea interesante.
2. fusionar conflictos al enviar el código revisado
¿Qué hacer si el compromiso para el código revisado está bloqueado por cambios conflictivos cometidos por otra persona mientras el código estaba esperando su revisión?
Un par de opciones a considerar son
- retroceda al inicio y exija a los desarrolladores que vuelvan a implementar y repasen el cambio.
Para ese caso, es posible que deba abordar un impacto negativo en la moral del equipo que esto podría (¡lo hará!).
- pasar la responsabilidad de la fusión a otro miembro del equipo ("maestro de fusión")
Para ese caso, también deberá decidir si las fusiones en sí deben pasar por una revisión previa al compromiso o no, y en caso afirmativo, qué hacer en caso de que si esa fusión a su vez se encuentra con otro conflicto.
- ignorar los cambios realizados en el código revisado en la etapa de fusión
Para ese caso, es posible que deba abordar un impacto negativo en la moral del equipo relacionado con el hecho de que el código confirmado difiere del que se revisó.
- invente una forma de evitar conflictos El
enfoque directo es permitir que solo un desarrollador a la vez modifique un conjunto particular de archivos, aunque esto no lo protegerá del tipo de cambios que no modifican los archivos directamente, sino que los impacta a través de cambios internos de API . También puede descubrir que este tipo de "bloqueo pesimista" hace que los cambios en todo el sistema y la refactorización profunda sean bastante problemáticos.
A modo de comparación, no habría problemas de ese tipo en las revisiones posteriores a la confirmación (ya que se trata de código que ya está fusionado por definición), pero dado que apunta a las revisiones previas a la confirmación, probablemente esto no sea interesante.
3. Desarrollador de carga que está esperando revisión
Establezca una política explícita para determinar si el desarrollador que envió la revisión debe cambiar a una nueva tarea o hacer otra cosa (por ejemplo, perseguir al revisor).
A modo de comparación, las revisiones posteriores a la confirmación apenas necesitan una política explícita (ya que es natural proceder a la siguiente tarea después de haber confirmado el código y teniendo en cuenta que el plazo de revisión es una o dos semanas), pero dado que se dirige a las revisiones previas a la confirmación, esto probablemente sea no es interesante.