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):
- Aplane las rutas de las
branches
Subversion, usando una convención de nomenclatura para mantener identidades únicas y la idea de la estructura actual. - Realizar
git-svn
- 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.