2009-07-02 22 views
21

Tengo un proyecto muy antiguo que incluye la fuente de otro proyecto directamente, en lugar de vincularlo como una biblioteca. En los días malos, cuando guardaba todo en CVS, tenía el código externo en una sucursal del proveedor e importaba periódicamente. Ahora que mi proyecto está en git, tendría más sentido incluir el proyecto externo como un submódulo. Pero, hay un problema: el proyecto externo ha migrado a Mercurial. Encontré los proyectos git-hg y hg-git, pero no estoy seguro de si alguno maneja los submódulos correctamente.git submódulo de Hg repo?

¿Hay alguna manera de crear un submódulo de git que apunte a un repositorio de Hg en lugar de a un repositorio de git?

Respuesta

12

Desde el hg-git menciona que submódulos no son compatibles, sin embargo, que deja sólo una opción manual:

  • configurar un repositorio Git en algún lugar que tenga acceso empuje para,
  • agregarlo como Git remoto y luego
  • ejecuta hg gpush desde dentro de su proyecto.

Por ejemplo:

$ cd hg-git # (an Hg repository) 
$ hg gremote add origin [email protected]/schacon/hg-git.git 
$ hg gpush 

Eso Git repo representará su submódulo, pero si modifica y empuje que submódulo, que todavía tendrá que tirar de que Git repo a la cesión temporal real de Hg.

Otros comandos excelentes de git-hg se enumeran en este "rosetta stone".

+1

Hay un error tipográfico en el ejemplo. "$ hg push" debería ser "$ hg gpush" como se menciona en la descripción anterior. Excepto que la respuesta de @VonC fue muy útil para mí. ¡Gracias! :-) –

+1

Este ejemplo es confuso con su nombre. ¿Cuál es el directorio principal del repositorio y cuál es el submódulo/subrepo dir? – einpoklum

+0

@einpoklum por lo que puedo leer de esta pregunta de hace 7 años, el submódulo es el repositorio externo que ha migrado a mercurial. El objetivo es pasar de su clon mercurial local al repositorio remoto de Git, el cual puede ser referenciado como submódulo por cualquier repositorio padre de Git. – VonC