2011-02-28 8 views

Respuesta

17

La extensión Shelve puede causarle dolor, y esto se puede hacer completamente con comandos de Mercurial. Krtek casi lo tenía pero usó export en lugar de diff. Pruebe esto:

hg diff --git > ~/saved-work.patch 
hg update --clean desiredbranch 
hg import --no-commit ~/saved-work.patch 
+0

Sí, 'hg selve', patch-queues et al. no están funcionando y te dan dolor!Esta solución anterior es de hecho una buena práctica. – math

1

No sé si es la mejor solución, pero puede seguir estos pasos:

1 ° hg diff --git > modifications.patch

2 ° hg update -C the_right_branch

3 ° hg patch modifications.patch

tal vez es mejor copiar las modificaciones. enviar un parche a un lugar seguro, por si acaso.

editar: actualizar con diff en lugar de exportar. Gracias a los comentaristas.

+0

¿este parche solo incluirá los cambios no confirmados? La sucursal en la que estoy trabajando tiene muchas diferencias que ya se han cometido en el pasado de la sucursal en la que quería estar. –

+1

Eso no debería exportarse, debería ser diff. –

+0

Sí, la exportación es para una revisión determinada, no una modificación actual del directorio de trabajo, actualizaré mi publicación. – krtek

3

Debería poder solo hg up otherbranch. Es importante que no use la opción --clean a hg up, ya sea directamente o mediante un alias, ya que eso descartará los cambios no confirmados.

Otra opción es usar una de las extensiones que proporciona hg shelve. El proceso sería entonces:

$ hg shelve --all 
$ hg up otherbranch 
$ hg unshelve 

que va a crear un parche de los cambios en el directorio .hg, volviendo su directorio de trabajo a un estado limpio, cambiar a la 'otherbranch', y luego aplicar el parche salvado.

+0

No conocía esta extensión, gracias, es más fácil que mi propia respuesta :) – krtek

+1

Krtek, su respuesta fue mejor. Shelve no se envía con Mercurial por una razón. Tiene dificultades con los archivos agregados, no es compatible con las funciones más nuevas y tiene un flujo de trabajo horrible si el estante no se aplica limpiamente a la nueva ubicación. –

+0

@ Ry4an Gracias por la información. He experimentado el horrible flujo de trabajo de shelve cuando tampoco se puede aplicar limpiamente. Parece que debería haber una extensión que ofrezca un comportamiento similar a un archivador, pero que simplemente haga tus comandos de diferencia/importación detrás de escena, incluso podría ser posible con solo alias. –

Cuestiones relacionadas