¿Cómo convierto un repositorio de git a mercurial?


104

He estado desarrollando una aplicación java usando git como repositorio de código fuente. Me gustaría compartir el proyecto con otros desarrolladores de Java y parece que hg es el más utilizado por ellos.

Mi pregunta es ¿cómo convierto un repositorio de git a hg?

Si intenté buscar en Google "convertir git a hg" y cada búsqueda se trata de convertir de hg a git. También estoy usando TortoiseHg .


16
Si necesita convertir de mercurial a git en su lugar: stackoverflow.com/questions/883452/…
Christian Oudard

Ese último párrafo no tiene sentido. ¿Un error?
tshepang

1
@Tshepang: Quería "git -> hg" pero obtuve "hg -> git". Editaré esta pregunta, pero supongo que la gente la entendió de todos modos ya que ahora hay respuestas.
Spoike

Respuestas:


79

La hg convertutilidad no está activada de forma predeterminada después de la instalación. Para configurarlo como tal, agregue lo siguiente a su .hgrcarchivo.

[extensions]
hgext.convert=

Si está utilizando TortoiseHg en Windows, entonces este archivo reside en su directorio de inicio como mercurial.ini. Después de este cambio de configuración, podrá utilizar la hg convertutilidad.


5
En Ubuntu, el cambio en todo el sistema se puede realizar en / etc / mercurial / hgrc
Sentient

1
En Windows, al usar TortoiseHg, se puede habilitar usando el elemento del menú Configuración global del menú de extensión del shell TortoiseHg en la sección Extensiones en Configuración global.
Umar Farooq Khawaja

La descripción es algo incompleta ya que no especifica que hg necesitará acceso a git para la conversión o de lo contrario obtendrá el error "no se puede encontrar la herramienta" git "requerida".
jmd

41

Usando la extensión Mercurial Convert

Agregue las siguientes líneas a su .hgrco para habilitar la extensión:

[extensions]
hgext.convert=

Y escribiendo un

cd src
hg convert --datesort . dst

(aunque puede dar lugar a algunos problemas ...)

Nota: metrix informa que esto podría no funcionar:

     hg convert --datesort src dst

Nota: sucede que hay un error hg convertsi ejecuta este comando desde un directorio que no sea el directorio de origen.
Obtendrá el siguiente error:

abort: cannot read tags from git-repo4/.git

Confirmado con git 1.7.9 y Mercurial 2.6.2 en Windows XP


Si esa respuesta incluye la .hgrcconfiguración en lugar de vincularla, sería integral.
fbmd

17

Es posible que desee consultar la utilidad http://hg-git.github.com/ : un complemento de Git para Mercurial

Este complemento fue desarrollado originalmente por los chicos de GitHub y permite la conversión de git <-> mercurial sin pérdidas. En teoría, incluso podría clonar el repositorio de hg.


2
Esta es una mejor solución que convertir el repositorio. También sería una mejor respuesta si tuviera más detalles. Las respuestas de una línea son casi inútiles.
naught101

1
@ naught101, gracias por la sugerencia, agregué más información aquí para leer directamente.
vdboor

después de instalar y configurar hg-git, use hg gexport y hg gimport para convertir entre ellos.
CAD bloke


6

La extensión de conversión puede funcionar para usted, pero si no lo hace, es posible que desee consultar tailor, que es una herramienta de propósito general para convertir entre los distintos SCM distribuidos.


2

Simplemente no podrías convertirlo en absoluto. ¡Solo usa el complemento Hg-Git ! Nadie notará la diferencia.


2

Nuevo jugador en la ciudad: git-remote-hg . Proporciona soporte de puente nativo en git.

Sólo:

hg init ../hgrepo
git push hg::$PWD/../hgrepo

1

En la Gitcarpeta con todos mis repositorios de Git creé el Git2Hg.cmdarchivo con el siguiente contenido:

set PATH=%PATH%;C:\Program Files\TortoiseHg
set PATH=%PATH%;C:\Program Files\Git\bin
hg convert %1

Ahora puedo convertir un repositorio de Git a Hg escribiendo esto en un CMD:

Git2Hg "Folder Name"

0

Complemento Hg-Git o si lo usa para Windows o la migración de uno a otro, visite aquí 2 [Windows GIT]

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.