2011-08-18 28 views
12

Soy nuevo en mercurial y he leído que no es posible fusionar solo un conjunto de cambios separado de otra rama. Entonces no sé cuál es el mejor enfoque para resolver lo siguiente:Fusionar solo un conjunto de cambios desde otra rama

  1. Comienzo con una revisión al estable R1
  2. continúo desarrollando en R1: CS1, CS2, CS3
  3. En algún momento necesito para resolver el error de mi revisión estable R1. Y quiero aplicar solo un conjunto de cambios de la línea en desarrollo (fe CS2)

¿Cuál es el mejor enfoque? Como la fusión no funcionó, lo que hice fue crear un parche de CS2 y luego aplicar el parche en la nueva rama estable para reparar el error. Esa es la forma Mercurial?

Saludos,

+6

injerto que: http://stackoverflow.com/questions/16898906/how-to-graft-with-tortoisehg –

Respuesta

7

El transplant extension automatiza lo que ha hecho a un solo comando.

Pero creo que la forma preferida (que dependiendo de la situación no siempre es posible) es hacer la reparación en la parte superior de R1 en primer lugar, y luego combinar eso con su consejo de desarrollo.

Eso es:

  1. de inicio con la versión estable R1.
  2. Usted trabaja, cs1...csN.
  3. Se necesita una solución importante para la estabilidad en la parte superior de R1, por lo que hg update R1.
  4. Haga la corrección, esto rinde R2.
  5. Regresa a donde lo dejaste, hg update csN.
  6. Combinar estable por lo que tiene la revisión, hg merge R2, hg commit ...
  7. seguir trabajando en csN+1.
+0

sobresaliente para señalar que mientras el trasplante funciona, funciona como una alternativa para cuando hiciste algo subóptimo en primer lugar. Si tiene cuidado con el origen de sus conjuntos de cambios, siempre puede obtener lo que desea con la fusión. –

+1

Esta respuesta no está actualizada, ya no es necesaria ninguna extensión a partir de Hg 2.0 (ver respuesta a continuación) – Larzan

11

ACTUALIZACIÓN: No hay necesidad de cualquier extensión más pues de Hg 2.0

Como 'CAD tío' señaló, esto es exactamente lo que el comando graft es para que se introdujo en Hg 2.0.

SourceTree

La forma más sencilla de hacerlo es con una interfaz gráfica de usuario como SourceTree, simplemente haga doble clic en la rama TARGET a cambiar, a continuación, pulse el botón derecho del ratón sobre cualquier otra revisión y seleccionar el 'injerto 'comando (extrañamente también puede ser una revisión de la rama actual). Si no hay conflictos, SourceTree creará inmediatamente una nueva revisión para la rama actual.

TortoiseHg

Exactamente lo mismo, seleccione objeto de bifurcación, a continuación, rmb sobre la revisión que desea injertar: How to graft with TortoiseHg

línea de comandos

Para hacer esto con la línea de comandos solo cambie a la rama TARGET y luego ejecute

hg graft -r {revision_number} 

con {revision_number} obviamente es el número de la revisión que desea incorporar a su sucursal actual. Esto creará un nuevo conjunto de cambios en su rama actual con todos los archivos de la revisión cuyo número utilizó en el comando.

para saber más acerca del comando injerto de leer este hilo aquí en stackoverflow

Cuestiones relacionadas