Pregunta

¿Es posible fusionarse con una rama que no sea principal o secundaria directa en TFS?Sospecho que la respuesta es no, ya que esto es lo que experimenté mientras lo usaba.Sin embargo, parece que en ciertos momentos sería realmente útil cuando se están trabajando en diferentes funciones que pueden tener diferentes ciclos de aprobación (es decir,característica uno podría ser aprobado antes de la característica dos).Esto se vuelve extremadamente difícil cuando tenemos ramas de producción en las que tenemos que fusionar alguna característica en una rama anterior para poder lanzarla antes de la próxima versión completa.

Nuestra estrategia de ramificación actual es desarrollarnos en la línea principal (o línea principal, como la llamamos) y crear una sucursal para estabilizar y lanzar a producción.Esta rama se puede usar para crear revisiones y otras cosas, mientras que la línea principal puede divergir para funciones futuras.

¿Qué técnicas se pueden utilizar para mitigar un escenario como el descrito anteriormente?

¿Fue útil?

Solución

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

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

Puede encontrar información adicional sobre fusiones infundadas aquí

También encontré que este documento es invaluable al construir nuestra estructura de ramificación tfs.Guía de bifurcación de Microsoft Team Foundation Server

Otros consejos

tf.exe merge /recursive /baseless $/TeamProject/SourceBranch $/TeamProject/TargetBranch

Es posible que desee revisar su estrategia de ramificación.¿Cómo se consiguen ramas de producción?¿Está fusionando todo el código de las ramas de desarrollo, realizando pruebas de regresión y luego creando una rama de producción para realizar correcciones?¿O se está desarrollando en el tronco y luego creando ramas de producción para estabilizar y liberar?La segunda forma crea problemas del tipo que estás describiendo.Si está utilizando el primer enfoque (se supone que el tronco es solo para cosas que se han construido en ramas probadas y luego fusionadas), se encontrará con esto con mucha menos 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 ramas se hayan creado a partir de la misma carpeta original.

  • trompa/
  • ramas/ -/características1 (ramificada desde el tronco) -/característica2 (ramificada del tronco)

Si hace esto, también debería poder fusionar entre característica1 y característica2.

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

Sí, puedes realizar una fusión sin fundamento, pero sólo desde la línea de comando (tf.exe).

TFS le permitirá fusionarse con una rama que no sea principal/secundaria; estas se denominan fusiones sin fundamento.Vea estos enlaces:

Desde MSDN

Del equipo de TFS a través de CodePlex

Normalmente hacemos cambios importantes o desestabilizadores en una rama de desarrollo.Si se acerca un lanzamiento importante de uno de nuestros productos, casi todos los cambios se realizarán en una sucursal.

Estoy lejos de ser un experto en TFS, pero creo que se pueden fusionar hermanos, y creo que no es una fusión infundada.

Nos bifurcamos en nuestra rama principal (nombre de rama "principal") para una característica (nombre de rama "característica"), luego necesité parte del trabajo en una rama que también se bifurcó de la rama principal (nombre de rama "dev").Consideraría que las ramas de funciones y desarrollo son hermanas, ya que ambas provienen del mismo padre.Fusioné la función con el desarrollador y todos los archivos (14000) se marcaron como combinación, algunos se marcaron como combinación, editar.No pude cancelar (visual studio simplemente se bloqueaba), así que acepté la fusión.Luego fusioné dev con main, luego saqué main a feature y nuevamente se marcaron 14000 archivos para fusionar.Estaba realmente molesta y tenía miedo de que esto continuara.

En este punto hicimos un proyecto de prueba.Configuramos el desarrollo principal, luego el ramificado y la función desde principal.Repetimos los pasos anteriores con los mismos resultados.Una vez que completamos la combinación de principal a característica, todas las fusiones futuras solo mostraron los archivos editados.

Después de nuestra pequeña prueba, completé la fusión de principal a característica.Y al igual que en la prueba, nuestras fusiones ahora solo muestran los archivos editados.Podemos ir de desarrollo a función, de función a principal, de principal a desarrollador, etc.

Me di cuenta cuando se modificaron todas las fechas de los archivos al bifurcar.¿Quizás esto sea un problema?

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top