2009-12-14 11 views
23

Debido a la falta de soporte de Mercurial en varias herramientas, y la opresión gerencial, ha sido necesario convertir varios repositorios Mercurial de prueba a Subversion para cumplir con el estándar de la compañía.Convirtiendo de Mercurial a Subversion

¿Hay alguna herramienta o sugerencia de cómo lograr esto sin perder el historial de revisiones y similares?

+0

Para el próximo wonderer que encuentra Mercurial extraño y está suspirando por Subversion, puede encontrar útil este enlace: [Subversion reeducación] (http://hginit.com/00.html) – noelicus

+0

Para la próxima vagabundo que encuentra a Mercurial repugnante, por favor no se "reeduque" usando el enlace anterior a menos que crea que un vendedor que vende herramientas basadas en Mercurial tiene una opinión imparcial. Tal vez intente respetar las preferencias y opiniones sobre las herramientas VCS vs DVCS. Muchas personas han intentado ambas cosas, o se han visto obligadas a hacerlo, y tienen opiniones perfectamente válidas sobre qué * ellos * prefieren y por qué. – JoGusto

Respuesta

28

La extensión de conversión que se envía con mercurial puede usar mercurial como src y subversión como destino.

hg convert --dest-type svn hgreponame svnreponame 

Asegúrese de habilitarlo en su archivo .hgrc.

Si quiere seguir usando mercurial a escondidas, entonces hgsubversion le permitirá realizar la sincronización bidireccional.

+1

esto falla después de 2 revisiones con 'abortar : svn salió con el estado 256' –

+1

No he usado el material svn dest, pero lo he visto cambiar mucho últimamente en la lista de correo. Asegúrese de estar utilizando el último mercurial (1.4.1) y las últimas fijaciones swig para la última svn. Luego comience a usar una combinación de --debug --traceback y tal vez incluso strace. Puede ser necesario comenzar con un historial mercurial completamente lineal, que se logra fácilmente con 'hg clone http: // src -r tip'. Creo que he escuchado que el formato de repositorio de svn no permite almacenar limpiamente las revisiones mercuriales. –

+4

Solo una nota adicional sobre esto, los abortos estaban ocurriendo debido a deficiencias del sistema de archivos de algún tipo (ntfs3g). Sólo sigue intentando. –

3

Tailor debería poder hacer lo que desee.

+0

Error de enlace: http://progetti.arstecnica.it/ server not found. – ChrisFreeman

+0

@ChrisFreeman: Desafortunadamente, parece que arstecnica.it está caído. Debian todavía tiene los archivos en su base de datos de paquetes: http://http.debian.net/debian/pool/main/t/tailor/tailor_0.9.35+darcs20090615.orig.tar.gz –

8

La respuesta anterior de Ry4an es el truco exacto; algunas instrucciones más detalladas para cualquier persona (como yo) que está teniendo problemas:

  1. Hágase un favor y no probar esto en Windows. Tendrás que instalar una versión muy específica de SVN, e incluso entonces algunas cosas fallarán con mensajes de error surtidos. Mi solución fue arrancar una instancia limpia de AWS, yum-get las últimas versiones de mercurial y svn, clonar el repositorio de HG y ejecutar allí el convert.

  2. Agregue esto a su archivo .hgrc para permitir la extensión convert:

    [extensions] 
    hgext.convert= 
    
  3. Ejecutar este comando:

    hg convert --dest-type svn <hg_directory> <directory_for_svn_output> 
    
  4. Usted puede obtener el siguiente error:

    abort: svn exited with status 256 
    

    ¡No te rindas! Simplemente ejecute el mismo comando nuevamente y continuará donde lo dejó.

    Si continúa teniendo problemas, agregue --debug --traceback a la línea de comando para obtener más detalles sobre lo que salió mal.

+0

Erm, ¿qué tiene que ver Windows con nada de eso? –

+0

@BillyONeal Ha pasado demasiado tiempo, así que no recuerdo exactamente, pero en Windows mi conversión falló debido a algunos problemas de sintaxis (creo que fue debido a algún problema con el formato de los parámetros de la línea de comandos a svn.exe). Al buscar esos errores en Google, encontrará que necesita una versión muy específica de SVN para que funcione. Después de algún tiempo jugando con eso, elegí simplemente hacerlo en AWS y funcionó la primera vez. – nitwit

+0

No pude gestionar esto tanto en Windows como en Linux. En linux, los mensajes de error son mike @ mike-virtual-machine ~/repos $ hg convert --dest-type svn ~/Horizon ~/HorizonToSvn inicializando svn working copy 'HorizonToSvn-wc' escaneado fuente ... clasificación ... convirtiendo ... línea base 6655 30357 abortar: svn salió con el estado 32512 mike @ mike-virtual-machine ~/repos $ – mikelong