tortoise subversion subir respaldo repositorio proyecto crear como clonar archivos acceder svn mercurial hg-convert

svn - subir - ¿Dividir el repositorio de Subversion en múltiples repositorios de Mercurial?



svn checkout (3)

Estamos migrando de Subversion a Mercurial y nos hemos topado con un bache en el proceso de conversión SVN-> Hg. En este momento, nuestro único repositorio SVN contiene código para un par de "proyectos" distintos, y nos gustaría separarlos en el proceso de migración. Nuestro repositorio SVN se organiza como:

. |-- proj1 | |-- branches | |-- tags | `-- trunk `-- proj2 |-- branches |-- tags `-- trunk

y nos gustaría simplemente hacer de proj1 y proj2 sus propios proj2 Hg. Por supuesto, nos gustaría que el historial específico de proj1 aparezca en el registro de proj2 . En este momento, cuando hg convert realiza la conversión, simplemente lee todos los archivos de forma bastante tonta, sin distinguir siquiera las ramas de los troncales.

¿Cuál es el proceso para filtrar por directorio y reconocer sucursales SVN en hg convert ?


¡Lo tengo funcionando ahora, gracias a la página wiki de ConvertExtension !

Probé el método de Ry4an, pero vino con las desventajas de tener que convertir primero el repositorio SVN en un repositorio Mercurial intermedio antes de dividir todo, y que las ramas, el tronco y las etiquetas no se reconocían porque hay dos proyectos, cada uno con su propio Ramas, tronco y etiquetas.

Descubrí que la especificación manual del directorio de ramas, troncales y etiquetas funcionaba muy bien para convertir un proyecto de SVN a Mercurial a la vez:

hg / --config convert.svn.trunk=proj1/trunk / --config convert.svn.branches=proj1/branches / --config convert.svn.tags=proj1/tags / convert --authors authors.txt original-svn-dir hg-proj1

Esto se encargará de reconocer las ramas, etiquetas, troncales y filtros de proj1 revisiones de solo proj1 al mismo tiempo. Entonces, simplemente lo repetí para proj2 .


Esto se hace fácilmente usando la extensión ''convertir'' como usted sugirió. Aquí está el procedimiento:

  1. haga un hg convert SVNREPO all-in-one-mercurial-repo de svn a mercurial con todo
  2. hg convert --filemap projectfilemap.txt all-in-one-mercurial-repo project-repo - uno por proyecto

Esos filemaps tienen en ellos lineas como:

exclude proj1 rename proj2 .

Ese sería el filemap utilizado para extraer el repo de dos proyectados del repositorio de mercurial todo en uno. Es posible que deba listar cada archivo individual en esos mapas, pero creo que los directorios están bien.

Hay otra pregunta aquí en SO donde respondí casi lo mismo y pegué en un ejemplo completo, pero eso debería ser suficiente para que se ponga en marcha.