2011-04-10 10 views
9

aquí va:¿Cómo lidiar con los submódulos de Git en un acuerdo de recompra que se convierte en Mercurial

$ cat .gitmodules 
[submodule "utils/external/firepython"] 
    path = utils/external/firepython 
    url = git://github.com/darwin/firepython.git 
[submodule "utils/external/textile"] 
    path = utils/external/textile 
    url = git://github.com/jsamsa/python-textile.git 

Si bien esto era todavía un repositorio git, que necesitaba para funcionar git submodule init, después de lo cual pasa un poco de magia. Como ahora he convertido el repositorio a Mercurial (usando la extensión hgext.git), no sé qué hacer. ¿Hay un proceso equivalente (necesito esos 2 módulos de Git en mi repo de Mercurial)?

Respuesta

12

Mercurial admite subrepositories de diferentes tipos: Mercurial, Subversion y Git. Por lo que puede crear un archivo de .hgsub con

utils/external/firepython = [git]git://github.com/darwin/firepython.git 
utils/external/textile = [git]git://github.com/jsamsa/python-textile.git 

y que informará Mercurial para hacer un clon de sus repositorios de Git cuando se clona el repositorio Mercurial. Es necesario hacer los clones Git usted mismo la primera vez, o copiarlos de otra parte de su disco:

$ git clone git://github.com/darwin/firepython.git utils/external/firepython 
$ git clone git://github.com/jsamsa/python-textile.git utils/external/textile 
$ hg add .hgsub 
$ hg commit -m 'Added Git subrepositories' 

A continuación, tenga en cuenta que Mercurial ha añadido un archivo .hgsubstate a su repositorio donde se almacena información sobre el Git subrepositorios. Este archivo es necesario para que Mercurial sepa qué revisión extraer de sus subrepositorios cuando crea un nuevo clon de Mercurial.

Un colega mío ha escrito un subrepository guide que puede serle útil.

Cuestiones relacionadas