¿Fusión cruzada en TFS?

¿Es posible fusionarse con una sucursal que no sea directora o hija directa en TFS? Sospecho que la respuesta es no, ya que esto es lo que he experimentado al usarlo. Sin embargo, parece que en ciertos momentos sería realmente útil cuando se trabaje con diferentes funciones que pueden tener diferentes ciclos de aprobación (es decir, la característica uno podría aprobarse antes de la característica dos). Esto se vuelve extremadamente difícil cuando tenemos sucursales de producción donde tenemos que fusionar alguna function en una twig anterior para que podamos lanzar antes de la próxima versión completa.

Nuestra estrategia de bifurcación actual es desarrollar en el tronco (o mainline como lo llamamos), y crear una twig para estabilizar y lanzar a la producción. Esta twig se puede usar para crear revisiones y otras cosas, mientras que la línea principal puede divergir para las próximas funciones.

¿Qué técnicas pueden usarse de otra forma para mitigar un escenario como el descrito anteriormente?

Estoy de acuerdo con Harpreet en que es posible que desee revisar cómo ha configurado su estructura de ramificación. Sin embargo, si realmente quieres realizar este tipo de fusión, puedes hacerlo a través de algo llamado fusión sin base. Se ejecuta desde el símbolo del sistema tfs,

Tf merge /baseless <<source path>> <<target path>> /recursive 

Información adicional sobre fusiones sin fundamento se puede encontrar aquí

También encontré que este documento es invaluable cuando se construye nuestra estructura de ramificación tfs. Microsoft Team Foundation Server Branching Guidance

 tf.exe merge /recursive /baseless $/TeamProject/SourceBranch $/TeamProject/TargetBranch 
  • MSDN: Cómo realizar una fusión sin bases en Visual Studio Team Foundation Server

Es posible que desee volver a visitar su estrategia de ramificación. ¿Cómo se obtienen las twigs de producción? ¿Está fusionando todo el código de las twigs de desarrollo, las testings de regresión y luego creando una twig de producción para las correcciones? ¿O se está desarrollando en el tronco y luego creando twigs de producción para estabilizar y liberar? La segunda forma crea problemas del tipo que describes. Si está utilizando el primer enfoque, se supone que el troncal es solo para cosas que se han construido en twigs probadas y luego se fusionaron, se encontrará con esto con mucha less frecuencia. Según ese enfoque, si todavía tiene este problema, puede deberse a que su esfuerzo de desarrollo es muy grande y es posible que necesite una estrategia de ramificación relativamente compleja con capas de ramificación y promoción.

AFAIK puedes hacer esto siempre que las twigs se hayan creado fuera de la misma carpeta original.

  • el maletero/
  • branches / – / feature1 (ramificado desde el tronco) – / feature2 (ramificado desde el tronco)

Si haces esto, entonces deberías poder fusionar también entre feature1 y feature2.

Aunque mi experiencia de ramificación / fusión con TFS me deja con ganas de más. Ojalá tuviéramos SVN.

Sí, puedes hacer una fusión sin base, pero solo desde la línea de command (tf.exe).

TFS le permitirá fusionarse con una sucursal que no es un padre / hijo; estos se denominan fusiones infundadas. Vea estos enlaces:

Desde MSDN

Del equipo de TFS a través de CodePlex

Normalmente hacemos cambios importantes o desestabilizadores en una twig de desarrollo. Si está cerca de una versión principal de uno de nuestros productos, casi todos los cambios se realizarán en una sucursal.