2010-09-30 12 views
5

Acabo de cambiar desde SVN donde después de unos pocos cambios en el trunk fusionaría un rango de revisiones (desde mi última fusión del trunk al branhc - HEAD) en una rama. Quiero hacer lo mismo con Mercurial usando TortoiseHG pero no puedo entender cómo. Acabo de asignar dos conjuntos de cambios al tronco, ahora necesito la rama para integrar esos cambios. ¡Gracias por adelantado!Mercurial/TortoiseHG Merge Trunk Cambios en Branch

Respuesta

7

En hg (o cualquier DVCS) puede fusionar cualquier conjunto de cambios con cualquier otro conjunto de cambios (excepto antepasados). Si abre el registro de repositorio desde TortoiseHG (Ver registro de cambios desde el menú contextual del Explorador o hgtk log desde la línea de comandos), puede actualizar a cualquier conjunto de cambios, luego seleccione "fusionar con".

En su caso específico, debe actualizar a la cabeza de su bifurcación y fusionarse con la cabeza del maletero.

+0

Mi caso no fue tan sencillo como esto debido a la conversión de SVN, pero de ahora en adelante este es el enfoque exacto que tomaré. – Chris

+0

@Chris: ¿te gustaría compartir los detalles de tu configuración? ¿Qué tipo de estructura de ramificación tienes? –

+0

Estaba intentando fusionar mi troncal en mi rama, pero como mi repositorio se creó a partir de un repositorio SVN utilizando HG CONVERT, HG no sabía que había incorporado cambios del tronco en el camino. Realicé la fusión desde el tronco hasta la rama y decidí mantener todos mis cambios de la rama. Me comprometí Esto hizo que HG reconociera que mi trompa se había fusionado con la rama. Luego realicé los nuevos cambios en el tronco, comprometido, y ahora cuando fusioné HG sabía que esos nuevos cambios eran los únicos que debían fusionarse. Ahora HG sabe exactamente qué es qué en mi repositorio. – Chris

2

Esto es lo que suelen hacer:

hg up trunk #assuming trunk is your main branch 
hg merge -r myawesomebranch 
#party 
22

He escrito una guía sobre working with branches in Mercurial. Todo se reduce a esto:

$ hg update mybranch # unless you are already at the tip of the branch 
$ hg merge default # merge in latest changes from "trunk" 
$ hg commit -m 'Merge with default' 

Cuando mybranch se hace, lo cierra y lo combine con defecto:

$ hg commit --close-branch -m 'Ready for merge' 
$ hg update default 
$ hg merge mybranch 
$ hg commit -m 'Integrated mybranch' 

Lo bueno de Mercurial es que utilice los mismos comandos sin importar la dirección te estás fusionando El sistema de seguimiento de fusión de Subversion requiere que agregue banderas de línea de comando especiales cuando se fusiona en una dirección, pero no en la otra (no recuerdo qué dirección es la que busca sin buscarla en el manual).

+0

¿Puede proporcionar un enlace actualizado a la guía? El de este comentario está roto. –

+0

¡Claro, he arreglado el enlace! –