2009-09-24 10 views
7

Estoy trabajando en una rama de características y tengo algunos cambios comprometidos con mi rama de características que afectarán a los otros desarrolladores. Me gustaría enviar esos nuevos cambios al maletero para que nadie se quede luchando por arreglar el descanso más tarde; sin embargo, no quiero comprometer el resto de la rama de características porque aún no es completamente funcional.Mejores prácticas de fusión parcial SVN

Me bifurqué del maletero en r109. Mi rama ha tenido todos los cambios en el tronco fusionados hasta r145. Me comprometí a cambiar mi "afectará a otros desarrolladores" a mi sucursal en r152 y r153.

Mi proceso de pensamiento aquí fue a svn cambiar mi copia de trabajo del tronco y luego hacer:

SVN svn merge: // proyecto/sucursal/MyBranch -r 146: 153 ./project

SVN se queja de conflictos porque el tronco contiene la versión original de uno de los archivos que modifiqué, mientras que solo me estoy fusionando en los últimos cambios (hice algunos cambios en ese archivo en una confirmación anterior a mi sucursal), y también se queja de conflictos con un archivo que otro desarrollador cambió en r149. Como mi rama solo contenía fusiones del tronco hasta r145 antes de comprometerme, mi rama no refleja ese cambio.

Eso está bien: los conflictos son fáciles de resolver, pero mi preocupación es que voy a tener problemas días a partir de ahora cuando quiero reintegrar mi rama completa en el maletero.

Como alternativa, podría hacer los cambios necesarios en el tronco y luego unirlos en mi rama, pero no me gusta ese enfoque porque los cambios ya están hechos en la rama. No tiene sentido hacerlos dos veces.

¿Alguien tiene alguna experiencia con fusiones parciales de ramas características en el tronco seguido de una reintegración completa? ¿Cuál es la mejor estrategia aquí?

Respuesta

4

Si el orden de los cambios en la bifurcación no es demasiado importante, es posible que pueda fusionar esos cambios solo con el tronco y luego combinar el resto cuando la función esté lista para reintegrarse.

Si es posible, simplemente evitaría toda la situación, esperando con el cambio hasta que la rama esté lista para fusionarse.

En la mayoría de los casos, si se trata de un cambio que se debe hacer en el tronco de inmediato, aconsejaría hacer el cambio en el tronco, no la rama, y ​​luego fusionar desde el tronco hasta la rama a medida que normalmente lo hago.

+0

Gracias! Me di cuenta después de enviarlo a mi sucursal que es algo que debería haberse hecho en el maletero. De lo contrario, lo habría hecho de la manera que sugeriste. –

1

Para asegurarse de que conserva todas las modificaciones realizadas por usted u otros desarrolladores que desea conservar y ninguna de las modificaciones que no desea, creo que probablemente deba fusionar manualmente todos los archivos en conflicto usando herramienta de fusión gráfica LVMerge de labview. He tenido buen éxito en el uso en conjunción con Tortoise SVN - aquí están las instrucciones de cómo integrar LVMerge en SVN y usarlo para resolver conflictos de versión:

http://www.dmcinfo.com/Blog/articleType/ArticleView/articleId/136/Using-LVmerge-LabVIEW-Merge-Tool-with-TortoiseSVN.aspx

+1

¿Cómo es esa herramienta diferente de la herramienta de fusión de tortuga? – SeanJA