Subversión: fusionar subtreees frente a seguimiento de fusión

Presentado desde la twig de características de Subversion requiere cambios de otra twig de características

Tengo dos twigs de características: "FeatureA" y "FeatureB". FeatureA está completo, pero no se fusionó con trunk porque no se ha confirmado si debería ir en la próxima versión o no.

FeatureB está en progreso, y resulta que requiere algunos cambios en dbml que en realidad se han aplicado a FeatureA.

Tengo algunas opciones, una de las cuales es fusionar solo el dbml y los files asociados. Soy consciente de que es una buena práctica fusionar / actualizar / comprometer etc. desde la raíz de copy de trabajo, pero ¿qué problemas podría causar si tuviera que seguir adelante?

Puede fusionar todas las revisiones de FeatureB a FeatureA branch que desee (buena idea para tener en count las revisiones fusionadas ya que la subversión no lo haría por usted, la herramienta svnmerge.py hace eso, pero prefiero mantener un logging). A continuación, deshaga / elimine los cambios que no desee (como, como ha comentado en la pregunta anterior, son parte de las revisiones).

Quería decir esto: "Más adelante, durante la combinación de FeatureA y FeatureB con trunk, no debería haber conflictos si los cambios que deshagas fueran independientes de los otros cambios en la twig FeatureB". Pero no estoy seguro de si esto es cierto. Es decir, ¿hay un conflicto / doble cambio si hay un cambio común en FeatureA y FeatureB, cuando estos cambios se fusionan en trunk?

Una solución alternativa es adoptar un enfoque seguro y hacer la contabilidad difícil usted mismo, de modo que cualquier cambio no se repita cuando se realice la fusión posterior en el enlace troncal.

Una forma de simplificar es usar un indicador en el código para activar o desactivar FeatureA. De esa forma, FeatureA ya puede fusionarse con trunk.

Me parece útil recordar que las fusiones en svn se describen con tres parameters. Usted toma los cambios que convierten rev X en rev Y y aplica esos cambios a rev Z. Creo que esto entra en conflicto con lo que dijo sobre el uso de la copy de trabajo.

Entonces, un enfoque sería encontrar los cambios que realizó en el dbml en la twig Feature A (identificada por una revisión de inicio y una de finalización), y aplicar esos cambios a la twig Feature B.

Creo que te está llegando la pregunta de "subtree mergeinfo". Los expertos dicen que esto es mejor evitarlo . Pero el performance también es un problema, ya que ejecutar una fusión en la raíz de una twig grande puede llevar mucho time. Para evitar esos problemas de performance, he realizado fusiones de subtreees y puedo confirmar que el subtree resultante mergeinfo causa algunos problemas. Entonces debes evitarlo cuando sea posible.

Al final, resolví este problema acordando con mis gerentes que si tengo este problema, simplemente buildé las dos características en una sola twig y tendrán que join y probarse juntas.

Desde la versión 1.6, Subversion rastrea una fusión, por lo que no tendrá más problemas.