2010-09-08 17 views
7

Esta pregunta podría deberse al hecho de que no entiendo cómo funciona la ramificación técnicamente en SVN y Git.Sucursales transferidas con svn2git

Pero cuando uso svn2git, algunas de las ramas están en refs/remotes/y otras no. Por ejemplo trunk es/refs/remotes/trunk.

Y cuando compruebo la rama principal en el nuevo repositorio git, no es el tronco svn sino una antigua rama del año pasado (y parece que se seleccionó completamente al azar). Las etiquetas se mueven correctamente.

Si miro el svn repo en Trac, parece que el diseño es correcto (tronco, ramas, etiquetas) y el tronco apunta a donde debería. También parece que las ramas que se muestran correctamente (sin controles remotos) están en .git/config, el resto no.

¿Qué está pasando aquí y qué debo hacer para convertir el svn repo correctamente? ¿Debo simplemente agregar definiciones para las sucursales remotas a .git/config también? Sin embargo, esto no resolvería el problema del tronco.

EDIT: Acabo de darme cuenta de algo: los controles remotos son exactamente los mismos que las sucursales locales con la diferencia de que hay una rama local "master" y una remota "remotos/trunk", las otras 19 ramas parecen similares. El problema parece ser que el maestro no está apuntando a "controles remotos/troncales" sino a algún compromiso aleatorio.

¿Es esto solo un error en svn2git?

+0

¿Puedes dibujar un pequeño árbol que muestre el diseño del tronco, las ramas y las etiquetas en relación con la raíz del repositorio? Oh espera. Me di cuenta cuando esto fue publicado. Ja, probablemente ya te hayas dado cuenta de esto. Ni idea de cómo encontré esta pregunta. – JofoCodin

Respuesta

0

Debe ser un error. De acuerdo con el readme en GitHub para git2svn

y que el código ingresado en maestro termina siendo lo que es actualmente en su tronco SVN en lugar de que sea la rama SVN su última confirmación se encontraba.

Usted podría intente especificar manualmente las ramas manualmente para ver si eso va a obtener resultados más consistentes

svn2git http://svn.example.com/path/to/repo --trunk trunk --tags tags --branches branches 

Si eso no funciona, se podría añadir un alliase a su .gitconfig f ile que se podía correr detrás del svn2git que reemplazaría tronco principal con

[alias] 
    fixport = !sh -c 'git checkout remotes/trunk trunk && git checkout master && git reset --hard trunk' 

luego de hacer su svn2git ... como normal y cuando se hace fixport ejecutar git y se obtenga una copia local de los mandos a distancia/tronco como trunk y reset master para igualar eso.

+0

Esta pregunta ya no es válida para mí, pero acepté su respuesta en caso de que alguien más tuviera el mismo problema. – Makis

Cuestiones relacionadas