Flujo de trabajo Mercurial: ¿cuándo puedo volver a establecer la base, cuándo debería fusionarme?

Hemos estado usando Mercurial en el trabajo durante un par de meses. Modificamos nuestro flujo de trabajo un time y terminamos con esto:

La instantánea inicial estaba en fase, luego la clonamos en nuestro repository central y todos clonaron eso localmente .

  • Cuando trabajamos en la function / corrección de errores siempre actualizamos la última configuration pnetworkingeterminada de la etapa para que comencemos desde la última copy de producción.
  • Luego, enviamos la twig de características a un repository central para realizar copys de security, lo que lo pone a disposition del equipo, etc.
  • Seguimos nuestro sistema de control de calidad y extraemos la twig de características y la fusionamos allí.
  • Si el control de calidad se cierra en la function, la fusionamos en la twig estable en la misma máquina.
  • Luego llevamos la twig estable a la puesta en escena, la fusionamos allí y hacemos testings de resumen.
  • Si todo está bien robamos todo al sistema en vivo.

Esto nos ha funcionado por un time, pero todavía hay un punto difícil que nos hace ir: "mmmmh, tal vez haya una mejor manera, no se siente del todo natural" .

El mayor problema que tenemos es cuando tenemos una twig de características que envejece en nuestra máquina local.

Ejemplo:

  • Tengo la twig 62_EpicNewFeature en mi sistema.
  • Las prioridades se reorganizaron, el trabajo en EpicNewFeature se detiene 🙁
  • 6 meses después, finalmente reanudo el trabajo en EpicNewFeature

En este punto, esa twig está muy por detrás del valor pnetworkingeterminado actual. Si lo termino y trato de fusionarlo en QA , tendré tantos conflictos (por lo que casi siempre conservas lo que hay en QA ahora).

Lo que hacemos alguna vez para mitigar este problema es fusionar el valor pnetworkingeterminado de nuevo en EpicNewFeature para ponerlo "al día". Esto simplifica nuestra fusión en el control de calidad, pero sigue siendo una gran combinación local.

He leído acerca de la re-localización, que se supone que ayudará a hacer que la próxima fusión sea un avance rápido ya que usted (por lo que yo entiendo) inyecta la historia en el medio, alterando su propia historia.

La mayoría de los lugares que he leído sobre la rebase te advierten que no lo hagas si ya has empujado tus twigs, y definitivamente no si alguien podría haber eliminado tus cambios. ¿Cómo puedes asegurarte de eso? empujamos a menudo al repository central para la copy de security y usualmente solo logramos extraer todo.

¿Ves algo que nos ayudaría a mejorar nuestro flujo de trabajo actual? ¿El rebasamiento más a menudo nos ayudaría?

Creo que has entendido mal lo que hace el rebase . Funciona simplemente fusionándose con la punta de su repository y luego cortando los enlaces originales. Es más o less la misma acción que tomar una "diferencia" y aplicar eso a la punta.

Igual obtendrás los mismos conflictos de combinación que intentas evitar.

Por lo general, la manera más fácil de lidiar con estos conflictos es poco sistemática. No intente fusionarse hasta la punta, todo de una vez.