subgit migrar svn git git-svn

subgit - migrar svn a git



¿Cómo importo las ramas svn enraizadas en diferentes directorios en git usando git-svn? (4)

Tengo una estructura de repositorio SVN como a continuación. Estamos utilizando niveles múltiples en las sucursales para varias ramas de mantenimiento de versiones, más un directorio para ramas de características.

git-svn init parece funcionar con un solo argumento de ramas, es decir, parece esperar que todas las ramas estén en una sola ubicación.

trunk branches 1.1 1.2.1 1.2.2 1.2 1.2.1 1.2.2 1.2.3 features feature1 feature2

¿Alguna idea sobre cómo manejar esto?

Gracias


¿Sería factible crear un repositorio git para cada uno de los subdirectorios de sucursales?


En su archivo de configuración, establezca la sección svn-remotes en algo como:

[svn-remote "svn"] url = svn://svnserver/repo fetch = trunk:refs/remotes/trunk branches = branches/*/*:refs/remotes/* tags = tags/*:refs/remotes/tags/*

Esto debería permitirle agarrar las ramas anidadas.


Por convención, todas las ramas de Subversion viven en una sola ruta de ''ramas'' en el repositorio de Subversion, así que no me sorprende que git-svn haga esta suposición.

Sugeriría lo siguiente (nota, puede perder algo de historial en esta operación):

  1. Aplane las rutas de las branches Subversion, usando una convención de nomenclatura para mantener identidades únicas y la idea de la estructura actual.
  2. Realizar git-svn
  3. Mueva las cosas en el repositorio git para cumplir con sus prácticas.

El peligro de losing history depende de qué tan bien git-svn siga las operaciones de copia desde rutas diferentes. Me he encontrado con este problema al migrar repositorios de subversión (1.4-ish) recientemente.


Puede agregar múltiples controles remotos de git svn para cada una de las ramas, o posiblemente cada uno de los directorios de ramas. La git svn fetch inicial de git svn fetch tomaría para siempre, pero por lo que entiendo debería funcionar.