2008-08-15 30 views
84

Tengo dos repositorios mercuriales separados. En este punto, tiene sentido que "se vuelvan uno" porque quiero trabajar en los dos proyectos simultáneamente.¿Cómo combinar dos proyectos en Mercurial?

Realmente me gustaría que los dos proyectos sean subdirectorios en el nuevo repositorio.

  1. ¿Cómo fusiono los dos proyectos?
  2. ¿Es esta una buena idea, o debería I mantenerlos separados?

Parece que debería poder pasar de un repositorio a otro ... ¿Tal vez esto es realmente sencillo?

Respuesta

69

pude combinar mis dos repositorios de esta manera:

  1. Uso hg clone first_repository clonar uno de los repositorios.
  2. Use hg pull -f other_repository para extraer el código del otro repositorio.

La (fuerza) -f bandera de la atracción es la clave - que dice ignorar el hecho de que los dos repositorios no son de la misma fuente.

Aquí están the docs para esta función.

+1

¿Esto preserva las claves hash de commits del segundo repositorio también? (Supongo que no, pero podría estar bien hasta que realice una fusión.) – Macke

+6

Esto funciona, pero también necesitará ejecutar 'hg merge' para finalmente hacer que todo funcione –

+7

** @ Marcus Lindblom: ** tirando un conjunto de cambios nunca, * nunca * cambiará su hash. Si observa 'hg glog' después de hacer esto, verá que tiene dos líneas de conjuntos de cambios no relacionados. El primer conjunto de cambios en cada línea no tiene padre, pero eso no es un problema para Mercurial. Una vez que lo hagas, querrás hacer un nuevo conjunto de cambios para cada línea donde 'hg mv' todo en la subcarpeta apropiada, luego fusionas las líneas y ya estás listo. –

3

Si no está utilizando el mismo código en los proyectos, manténgalos separados. Puede configurar su repositorio personal de cada uno de esos proyectos para que sea solo un directorio aparte. ¿Por qué mezclar todas las ramas, fusiona y cometer comentarios cuando no es necesario?

Sobre su edición: Empujando de un repositorio a otro. Siempre puede usar el comando transplant. Aunque, todo esto es realmente un paso lateral de su deseo para combinar los dos, por lo que puede sentirse incómodo con mis sugerencias. Entonces puedes usar la extensión del bosque, o algo.

hg transplant -s REPOSITORY lower_rev:high_rev 
7

hg comenzó a tener subrepo desde 1.3 (2009-07-01). Las primeras versiones eran incompletas y inestables, pero ahora es bastante usable.

+2

He encontrado que los subrepos son un dolor para trabajar. Funcionan, pero tienes que pasar por algunos aros para que se comporten y pueden ser la fuente de muchos dolores de cabeza si no tienes cuidado. –

+4

Puede valer la pena señalar que los subrepositorios son oficialmente una característica de último recurso: http://mercurial.selenic.com/wiki/Subrepository (desde 2013.11.12) – jtpereyda