Hay un gran desafío al hacer mis tareas, y eso es hacer tareas interdependientes que dije en esta imagen. Supongamos que tenemos dos tareas, A y B, para realizar las subtareas A1, A2 y B1, B2, dado que la tarea B depende de A.

enter image description here

Para realizar la tarea B idealmente, debe hacer tareas como esta imagen.

enter image description here

Pero esto no sucede en muchos casos, por ejemplo, cuando se realiza un trabajo A2 desde el servidor y para evitar perder el tiempo, decidimos trabajar en la tarea B al mismo tiempo. En este caso, la primera solución que no creo que sea verdadera es hacer la Rama B desde A, como en la imagen a continuación, lo cual no es muy correcto, porque la Rama B incluye implícitamente A1, y si hay un error, se desarrollará transferencias.

enter image description here

3
ali vatanparast 20 jul. 2020 a las 07:54

3 respuestas

La mejor respuesta

La ramificación de las ramas de características es un buen indicador de proceso desordenado . A veces es inevitable, pero cada vez que tiene que pensar en otras soluciones:

  1. Presione A para dominar (o desarrollar si esa es su rama principal) incluso si no está listo. Pero oculte los cambios del usuario a través de Ramificación por abstracción o Alternar funciones.
  2. Considere volver a priorizar para que la característica B no se inicie hasta que se fusione A. Hasta entonces, puedes trabajar en la función C.
  3. Si A no se puede liberar sin B, desarrolle ambos en una sola rama.

Etiquetó su pregunta con GitFlow; por lo general, implica muchas ramas innecesarias. Solo para que lo sepas: GitFlow es una estrategia de ramificación obsoleta . Solo es aplicable cuando mantiene varias versiones del producto al mismo tiempo.

para evitar perder el tiempo, decidimos trabajar en la tarea B al mismo tiempo

Si bien cree que no pierde el tiempo al comenzar a trabajar en B, puede terminar perdiendo más tiempo debido al trabajo paralelo. Los procesos de desarrollo modernos (Just-in-time, Theory of Restraints, Continuous Delivery) nos enseñan a tener pequeña cantidad de trabajo inacabado (también conocido como Costos de inventario), cuanto más pequeño, mejor. Al ramificarse demasiado y tener mucho código inédito, aumenta la cantidad de trabajo inacabado que aumenta los costos de desarrollo.

2
Stanislav Bashkyrtsev 20 jul. 2020 a las 06:25

dado que la tarea B depende de A.

Esto implica que B tendrá todos los errores que escriba en la tarea A. No hay forma de evitar eso si se mantiene esta dependencia.

Como esos errores se corrigen en A1, puede fusionar la rama A1 en la rama B.

0
Code-Apprentice 20 jul. 2020 a las 06:04

La rama B incluye implícitamente a A1, y si hay un error, desarrolla transferencias.

Eso parece inevitable si A y B están tan interconectados.
Si hay un error en A, deberá fusionarlo o seleccionarlo en B (creado a partir de A).

Pero para tareas altamente acopladas como A y B ... crearía solo una rama ABui y una ABapp

3
VonC 20 jul. 2020 a las 06:00