Convertir un repository de Mercurial (hg) a Git en Windows (7)

Estoy realmente muy frustrado en este punto. Tengo un repository de hg existente que tiene meses de historial de encoding, y quiero incluir esto en un repository privado de Github para poder trabajar en él desde allí. Desafortunadamente, uso Windows y parece que no encuentro ninguna forma de convertir el repository que realmente pueda funcionar correctamente. Prácticamente cada bit de ayuda y consejo que puedo encontrar en línea parece suponer que estoy ejecutando desde algún tipo de shell * nix, que no.

Actualmente tengo instalado: TortoiseHG, Python 3.1 y Git para Windows.

Lo que he intentado:

  1. hg-init plugin for hg: cuando bash usar el comando gexport (y otros de hg-git), solo obtengo cadenas de excepciones de python. No puedo conseguir que Git reconozca el comando de gremote. Intenté seguir lo que estaba aquí: http://github.com/blog/439-hg-git-mercurial-plugin

  2. hg-to-git (exportación rápida): todos los tutoriales siguen esperando que ejecute un archivo .sh. Otro hilo de stackoverflow parecía implicar que Powershell puede ejecutar archivos .sh, pero no puedo hacer que se ejecuten por mi propia vida. Ejemplo: http://hivelogic.com/articles/converting-from-mercurial-to-git

  3. Mercurial to git converter – http://permalink.gmane.org/gmane.comp.version-control.git/36601 – Este no quiere funcionar cuando lo ejecuto a través de Python, que se queja de que tiene un error de syntax en la línea 44. No sé python, así que no tengo ni idea.

Cuatro horas de búsqueda de Google y vadeando tutoriales inútiles y personas más afortunadas que yo, cantando los elogios de cada publicación de blog supuestamente útil, pero no he llegado a ninguna parte con esto. ¿Alguien puede ofrecerme alguna ayuda o sugerencia para que la pruebe?

  1. Instale Cygwin (con python, hg, git)
  2. Instalar git-hg
  3. ejecutar git-hg clone ...url...

O dime cuál es la url para este repo hg tuyo, y puedo convertirlo para ti.

Existe una gran cantidad de información conflictiva sobre cómo convertir los repositorys de Mercurial a Git en Windows. Realmente es bastante fácil y solo requiere la instalación de TortoiseHg y Git.

Preparación

Habilite hg-git agregando lo siguiente a su archivo de configuración de Mercurial ( % Userprofile% \ mercurial.ini ):

 [extensions] hggit = hgext.bookmarks = [git] intree = True 

Conversión

Vaya al directorio del repository (que contiene el subdirectorio .hg ) en la línea de comandos y ejecute los siguientes comandos:

 hg bookmark -r default master hg gexport --debug git config --bool core.bare false git reset HEAD -- . 

Más información

Puede encontrar una descripción detallada de estos pasos en el artículo de mi blog sobre el tema.

¿Has considerado instalar msysgit ? El shell de git bash que te da debería poder ejecutar archivos .sh.

Todo lo que he leído sobre estos convertidores de Hg para Git señala un error obvio que ha cometido: ¡Usar Python 3!

Esos errores de Python que has estado recibiendo se deben a scripts como hg-git y fast-export que se están construyendo usando Python 2.6. Python 3 trata la “impresión” de manera diferente, de ahí sus errores.

Reescriba los scripts para trabajar con su versión o instale Python 2.6.

Asegúrese de agregarlo a su configuración de PATH. Lo mismo ocurre con la instalación de msysGit. Asegúrese de elegir la segunda opción en la instalación para agregar Git a su ruta.

También necesita Mercurial For Python, disponible en el proyecto thg-winbuild de TortoiseHG:

https://bitbucket.org/tortoisehg/thg-winbuild/downloads

El archivo se llamará ‘mercurial-2.2.2.win-amd64-py2.6.exe’ para Windows de 64 bits y ‘mercurial-2.2.2.win32-py2.6.exe’ para 32 bits. Mientras esté en ello, obtenga el instalador Mercurial 2.2.2, por si acaso.

Aunque indicó que no desea instalar otro software VCS, el uso de cualquiera de estos convertidores Hg requiere que también se instale Mercurial.

Otra desventaja a tener en cuenta es que estos convertidores pueden no funcionar con las últimas versiones de Mercurial. Es posible que deba experimentar un poco con versiones anteriores para encontrar una que funcione bien con los scripts.

Asegúrese de leer atentamente los tutoriales y los archivos Léame para saber qué convertidor desea utilizar. Parece que gran parte de su dolor y sus problemas se deben a haber saltado impacientemente al extremo profundo solo después de haber rozado la documentación.

Hay parches disponibles que agregan soporte Mercurial a Git y msysGit, pero tendrá que sentirse cómodo con los parches y la comstackción desde la fuente si desea seguir esa ruta.

Puede parecer una tontería (o una solución para los desesperados …) pero creo que Bazaar tiene un buen soporte para los repositorys de Hg y Git, y funciona bien en Windows.
Entonces, si todo lo demás falla, quizás puedas usar bzr-hg y bzr-git para hacer la conversión …

Si el repository original de Mercurial está disponible en la web, y si no le importa usar GitHub para hacer esto, la conversión de Mercurial a Git ahora es muy sencilla:

  1. Inicia sesión en GitHub.
  2. Haga clic en el + en la parte superior derecha.
  3. Seleccione Import repository .
  4. Proporcione la URL del repository de Mercurial, un nombre para él en su cuenta y si será público o privado.
  5. Haga clic en Begin import y espere.

Ni siquiera necesitas permanecer en la página después de eso. Después de un tiempo, GitHub le notificará por correo electrónico que la importación ha finalizado.