He estado leyendo sobre la ramificación / fusión con Subversion 1.5 usando el excelente y gratuito Version Control con el libro de Subversion . Creo que entiendo cómo usar el cliente de línea de comandos de Subversion para realizar las acciones que necesito con más frecuencia, que son:
Actualizar rama con cambios desde el tronco
Desde el directorio de trabajo de la sucursal, ejecute:
svn merge http://svn.myurl.com/proj/trunk
Fusionar rama en tronco
Desde el directorio de trabajo del tronco, ejecute:
svn merge --reintegrate http://svn.myurl.com/proj/branches/mybranch
Sin embargo, estamos utilizando TortoiseSVN 1.5 como nuestra interfaz para Subversion. Me gustaría saber cómo realizar mejor estas operaciones con TortoiseSVN. El nuevo cuadro de diálogo proporciona tres opciones diferentes en el menú principal.
- Fusionar una gama de revisiones
- Reintegrar una rama
- Fusiona dos árboles diferentes
Por lo que puedo deducir, TortoiseSVN siempre ejecuta svn con la siguiente sintaxis.
svn merge [--dry-run] --force From_URL @ revN To_URL @ revM PATH
Además, la reintegración de una rama a menudo falla con un mensaje que indica que algunos objetivos no se han fusionado y que no puede continuar, por lo que tuve que usar la opción # 3.
Mis preguntas son:
- ¿Cómo uso TortoiseSVN 1.5 para fusionar los cambios del tronco a una rama?
- ¿Cómo uso TortoiseSVN 1.5 para fusionar la rama con el tronco, con y sin el método de reintegración?
- ¿Cuál de las opciones anteriores debo usar para cada una y por qué?
EDITAR
A través de las pruebas de "ejecución en seco", he encontrado que la operación de Subversion de línea de comando
svn merge http://svn.myurl.com/proj/trunk
es análogo a la opción n. ° 1 (Combinar un rango de revisiones) en TortoiseSVN, siempre que deje el rango de revisión en blanco.
fuente
Respuestas:
El comportamiento depende de la versión que tenga su repositorio. Subversion 1.5 permite 4 tipos de fusión:
Subversion antes de 1.5 solo permitía los primeros 2 formatos.
Técnicamente, puede realizar todas las fusiones con los dos primeros métodos, pero los dos últimos permiten el seguimiento de fusión de Subversion 1.5.
Las opciones de TortoiseSVN combinan un rango o revisa mapas al método 3 cuando su repositorio es 1.5+ o al método uno cuando su repositorio es más antiguo.
Al fusionar funciones en una rama de lanzamiento / mantenimiento, debe usar el comando 'Combinar un rango de revisiones'.
Solo cuando desee fusionar todas las características de una rama de nuevo con una rama principal (comúnmente troncal) debe considerar el uso de 'Reintegrar una rama'.
Y el último comando -Fusionar dos árboles diferentes- solo es útil cuando desea salir del comportamiento de ramificación normal. (Por ejemplo, comparar diferentes versiones y luego fusionar la diferencia con otra rama más)
fuente
No pude seguir correctamente las otras respuestas, aquí hay más de una guía para tontos ...
Puede hacerlo de cualquier manera para ir
trunk -> branch
obranch -> trunk
. Siempre primerotrunk -> branch
soluciono cualquier conflicto allí y luego me fusionobranch -> trunk
.Fusionar tronco en una rama / etiqueta
fuente
trunk
ybranch
, a continuación, asegurándose de que se fusionan cualquier cambio detrunk
quebranch
tan pronto como sea posible se evitará conflictos tanto como sea posible. Esto significa que cuando combinabranch
atrunk
que no debería haber ningún conflicto.Debe usar "fusionar un rango de revisión".
Para fusionar los cambios de la troncal a una rama, dentro de la copia de trabajo de la rama, elija "fusionar rango de revisiones" e ingrese la URL de la troncal y las revisiones de inicio y finalización para fusionar.
Lo mismo en la forma opuesta para fusionar una rama en el tronco.
Acerca del indicador --reintegrate, consulte el manual aquí: http://tortoisesvn.net/docs/release/TortoiseSVN_en/tsvn-dug-merge.html#tsvn-dug-merge-reintegrate
fuente
Echa un vistazo a svnmerge.py . Es línea de comandos, TortoiseSVN no puede invocarlo, pero es más poderoso. De las preguntas frecuentes :
fuente
Shift-Right Haga clic en la carpeta y seleccione TortoiseSVN -> Merge All
fuente