2010-08-09 17 views
13

clonar un repositorio svn en git es fácil con git-svn. Sin embargo, tengo que hacerlo al revés. Tengo un repositorio git por ahí y quiero importarlo en una carpeta vacía (excepto desde el tronco, las ramas y las etiquetas) manteniendo toda la información de confirmación.Exportar el repositorio git a svn

Cetro un git-svn-clone del svn repo, saqué el git master y dcommitted. Sin embargo, el único commit que tengo en svn es el que dice "fusionado de git"

También intenté de otra manera: cloné el repositorio de git y llamé a git svn init pero git sigue diciendo "No se puede determinar la información de SVN en sentido ascendente HEAD historia ".

¿Es de alguna manera posible crear un repositorio svn desde git?

Cheers, Michael

Respuesta

6

cuando se tira de la rama principal de la otra git repo crea una fusión cometió, porque no hay una historia común.

se debe utilizar git pull --rebase (que cambiará cometer los identificadores, ya que recrea las confirmaciones) en su lugar, a continuación, dcommit


también se podría tratar el siguiente:

checkin la versión inicial con SVN (simplemente creando esas ramas, etiquetas, carpetas de enlaces y cometiendo) primero, luego crea un git svn clone (git svn -s clone svn://…)

y luego ejecuta los siguientes comandos:

# create a ref to your "svn" commit 
git checkout -b svn 
# get all your "git" commits 
git fetch $your_remote_git_repo 
# create a ref to your "git" commit 
git branch master FETCH_HEAD 
# rebase the rest your git commits 
git rebase svn master 
# commit to svn! 
git svn dcommit 

edición recogida de cereza sólo era necesario porque mi configurar rápidamente repositorio git tenía sólo compromete vacías

+0

he probado con --rebase git pull pero destruye la información aguas arriba SVN: # git svn clon -s # cd proyecto # git git pull --rebase: Proyecto # git svn dcommit No es posible determinar la información SVN aguas arriba del historial HEAD. Quizás el repositorio está vacío. en la línea/usr/lib/git-core/git-svn 517. –

+0

intente crear una confirmación ficticia con svn primero – knittl

+0

No estoy seguro de haber entendido lo que quiere decir: Después de clon sv gn creé una confirmación de prueba en svn . Después de git pull --rebase, puedo seguir obteniendo svn fetch, pero no dcommit. Pienso en solo importar a svn ignorando la historia. –

12

Aquí está mi receta para la publicación de un repositorio git a través de SVN:

svn mkdir --parents http://host/path/to/repo/{trunk,tags,branches} \ 
    -m "Standard layout for $project" 
git svn init -s http://host/path/to/repo/ 
git svn fetch 
git rebase trunk master 
git svn dcommit 

subversión de won preservar tiempos de compromiso o autoría. Que Dios te ayude si usabas ramas.

+0

Después de hacer la 'rebase', git informa que los dos repos ahora han divergido mal. ¿Qué debería uno hacer para rectificar eso? –

Cuestiones relacionadas