2009-01-31 22 views
39

Razones para hacer esto a un lado, ¿hay una forma razonable de convertir un repositorio completo de git a la subversión?Convirtiendo un repositorio de git a subversión

ido solo un montón de información sobre la migración de subversión a Git, y el intercambio de conjuntos de cambios entre los dos, pero no por hacer una simple conversión de todo el repositorio git a SVN.

+1

Duplicado aquí: http://stackoverflow.com/questions/661018/pushing-an-existing-git-repository-to-svn/1056817#1056817 – cmcginty

+15

Triste que tuvo que prefacio con "Razones para hacer esto a un lado" para prevenir una guerra de llamas o tal ... –

Respuesta

14

El problema general de realizar conversiones en esta dirección es que los repositorios de Git pueden contener más que solo un historial lineal de revisiones, como podría esperar Subversion. Son posibles múltiples ancestros con historias divergentes y confusiones de fusión frecuentes, que no pueden representarse fácilmente en un repositorio de Subversion.

Para casos simples en los que tiene un historial lineal en su repositorio de Git, puede usar git-svn dcommit para enviar el lote a un repositorio de Subversion que de otro modo estaría vacío.

+2

Lamento revivir esto después de algunos años, pero ¿puedes dar un ejemplo concreto de cómo hacer esto? Digamos que tengo un clon de un repositorio git en ~/my-git-repo, y quiero copiar el historial de commit en algún repositorio SVN, por ejemplo svn: //foo.com/empty-svn-repo/ –

+1

@SchighSchagh: Eche un vistazo a esta pregunta reciente, podría ser más adecuada para lo que necesita: [¿es posible recrear el repositorio svn desde (completo) git-svn clone?] (Http://stackoverflow.com/questions/13284762/possible-to -recreate-svn-repository-from-full-git-svn-clone) –

6

Es muy fácil de realizar con SubGit.

$ svnadmin create svn.repo 
$ subgit configure svn.repo 
$ nano svn.repo/conf/subgit.conf to specify a path to your bare repository (you may use "git clone --bare <URL>" if you have none locally) 
$ subgit install svn.repo 

Después de la conversión de su SVN y repositorio Git ligado estarán sincronizados: cada pulsación Git será traducido a SVN y viceversa. Para romper ejecución de conversión

$ subgit uninstall svn.repo 

Mientras SubGit traducción tratará de preservar cometer fechas, etiquetas, ignora, se funde, EOLs, ramas, etc., ya que es posible. No puedo decir lo mismo sobre el repositorio de git-svn.

+0

Esto no funciona. Consulte https://stackoverflow.com/a/11084905/785194 para obtener una solución de subgit que funcione. – EML

Cuestiones relacionadas