¿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 .

Spoike
fuente
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.

Spoike
fuente
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

VonC
fuente
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.

vdboor
fuente
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
9

Control de revisión distribuido con estados Mercurial :

Las herramientas de control de revisión admitidas por convert son las siguientes:

  • Subversión
  • CVS
  • Git
  • Darcs

Entonces, ¿tal vez no necesite ninguna herramienta adicional?

Bombe
fuente
1
Desafortunadamente "hg convert" no está disponible en tortoisehg
Spoike
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.

Luke Francl
fuente
2

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

Jay Atkinson
fuente
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
FelipeC
fuente
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"
stenci
fuente
0

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

dilshad
fuente