2010-10-20 14 views
11

En la respuesta a this question, Ry4an indica que "no puede presionar Changeset2 sin presionar Changeset1".En Mercurial, ¿hay alguna manera (aparte de "Cherry picking") de empujar un conjunto de cambios sin presionar también los conjuntos de cambios asociados con una cabeza diferente?

Esto ciertamente tiene sentido si el repositorio es el siguiente:

+ Changeset2 
| 
+ Changeset1 
| 
+ Original 

Sin embargo, no parece tener tanto sentido en el siguiente escenario, que es lo que tengo actualmente:

+ Changeset2 
| 
| + Changeset1 
|/
|/
+ Original 

Idealmente, quiero poder devolver solo Changeset2 al repositorio desde el que inicialmente cloné. Mercurial no parece dispuesto a dejarme hacer eso. Insiste en que presiono también el Changeset 1 ... que no está permitido, ya que crearía un nuevo encabezado en el repositorio original. Obviamente, pude "elegir Cherry", o crear un parche para aplicar en el repositorio original, pero parece torpe. ¿Me estoy perdiendo de algo?

Actualización: Probablemente debería haber mencionado en mi pregunta inicial que estaba tratando de realizar la operación desde la interfaz gráfica de usuario TortoiseHg. Como Niall C. correctamente identificado en su respuesta, la línea de comandos de Mercurial me permitió lograr lo que necesitaba, sin embargo, aún estaría interesado en saber si hay alguna forma de lograr la misma operación desde la GUI.

+0

Sí, en esa pregunta la historia era lineal y mi respuesta era específica para eso. Naill tiene exactamente lo que necesitas a continuación. –

+1

En cuanto a su actualización, hay una forma de hacerlo en TortoiseHg, pero realmente no se puede tratar como un comportamiento predeterminado: debe elegir manualmente qué ramas presionar cada vez que presione. Ver http://stackoverflow.com/questions/2819760/ – StriplingWarrior

Respuesta

11

Si está utilizando hg push sin ninguna opción de línea de comandos, intentará insertar cada conjunto de cambios en su repositorio local que no exista en el repositorio remoto. Si usa la opción -r/--rev, simplemente presionará esa revisión y sus antecesores. En su caso, usted tendría que hacer:

hg push --rev Changeset2 

Ver hg help push para más detalles.

+0

¡Excelente! Estaba seguro de que me estaba perdiendo algo y eso fue todo. –

+3

Consulte el comando 'hg nudge' de Steve Losh (http://hgtip.com/tips/advanced/2009-09-28-nudge-a-gentler-push/).Es la misma idea, pero tiene algunas buenas explicaciones y flujos de trabajo que puedes usar con ella. – tghw

2

Para los amantes de la interfaz de usuario que les gusta las imágenes:

  1. En TortoiseHg clic en el botón Detect outgoing changes to. enter image description here

  2. Haga clic con el botón derecho del mouse en la revisión que desea presionar.

  3. Elija Push -> Push to Here. enter image description here

Resultado: Va a empujar única revisión seleccionada en lugar de todo. enter image description here

Espero que esto te ahorre algo de tiempo.

Cuestiones relacionadas