2011-01-20 13 views
5

Tengo un repositorio Mercurial central que contiene un historial clonado de un repositorio SVN usando hgsubversión. He retirado los commits adicionales realizados en el repositorio SVN desde que se clonó el repo original de hg; estos se encuentran actualmente en la rama predeterminada.Usando Mercurial, ¿cómo obtengo los cambios de la configuración predeterminada en una rama con nombre?

También tengo una rama con nombre. He clonado esta rama (usando hg clone -b mybranch) en mi sistema local. Ahora quiero tomar los cambios que existen solo por defecto y ponerlos a disposición en mi rama nombrada. La forma más obvia de hacerlo es hacer un hg update mybranch en el repositorio, luego hg merge default y confirmar. Esto parece arriesgado: si me olvido de volver a actualizar a la configuración predeterminada después de que termine, todas las extracciones futuras de SVN generarán cambios en mybranch.

También he considerado que tal vez no debería haber especificado MyBranch cuando clonado el repositorio, pero clonó todo el repo y acaba de actualizar a MyBranch localmente. Por lo tanto, podría llevar los cambios por defecto a mi clon local y hacer la fusión allí.

¿Cuál es la respuesta correcta aquí? Hazlo en el repositorio compartido y solo ten cuidado? ¿Clonar todo y administrar sucursales localmente? ¿O hay una solución más fácil que me falta?

+1

La fusión parece perfecta, realmente no entiendo su problema. * hgsubversion * parece estar al tanto de las ramas de SVN, por lo que cuando tira, debe poner * SVN-trunk * cambios en su * default * y * SVN-mybranch * en su rama * mybranch *. Si se fusiona y permanece en * mybranch *, ¿la sugerencia de * mybranch * realmente cambia si el lado remoto tiene cambios solo en el tronco? Pulling debería funcionar independientemente de la revisión de su copia de trabajo. –

+0

Mi preocupación era realizar cambios directos en el repositorio principal y los riesgos asociados con el mismo. Por supuesto, en el mundo DVCS, todos los repos son esencialmente iguales, por lo que probablemente sea solo mi sesgo VCS cliente-servidor. –

Respuesta

6

En general, con Mercurial, cada vez que hago algo que creo que podría causar problemas, clono el repositorio y lo intento por ahí. Entonces, puedo elegir volver a introducir esos cambios o realizar la acción en el repositorio real. De cualquier manera, tengo la opción de fallar y no causar ningún daño. Los clones pueden desecharse, no tiene que guardarlos si lo estropeó.

+1

Ese es un buen punto, y es la respuesta a la que me estaba inclinando de todos modos. Solo quería asegurarme de que no había alguna característica de hg que me faltaba, y eso parece poco probable, dada la tasa de respuesta tipo firehose a la mayoría de las preguntas de SO que he publicado. –

1

Hazlo en el repositorio compartido y ten cuidado. O clone todo el repositorio compartido, realice la fusión allí, y luego presione hasta el clon de rama única.

Cuestiones relacionadas