2011-03-31 13 views
5

Actualmente tengo un proyecto en el código de Google que me gustaría incorporar a un proyecto en Github.Importación de un Repo SVN en un repositorio de Git EXISTENTE como una rama

El problema es que el proyecto SVN es esencialmente solo una carpeta del proyecto más grande en github, así que no creo que pueda usar git-svn para esto.

Supongo que puedo usar git svn para clonar el proyecto, pero no estoy seguro de cómo injertar correctamente el proyecto svn en el proyecto git existente.

El resultado deseado sería obtener el historial de SVN en una rama de Git (no injertarlo en el maestro).

Ser capaz de comprometerse nuevamente a svn no es realmente necesario (si eso ayuda).

RESUELTO

Terminé usando la sugerencia de just_doug, pero con algunas modificaciones de menor importancia:

1: He utilizado las sugerencias de http://ivanz.com/2009/01/15/selective-import-of-svn-branches-into-a-gitgit-svn-repository/ añadir googlecode como referencia remota

2: crear una nueva rama fuera de maestro para la rama remota que quería

3: utilicé

nuestro

git merge -s --no-comprometen googlecode remoto

fusionar los dos

4: Entonces utilizaron

git lectura del árbol - prefijo = carpeta1/carpeta2/ -u googlecode-remote

a leer en la historia de combinación y rebase a la subcarpeta deseada

espero que esto ayude a alguien en una situación similar;)

Respuesta

2

no he usado antes, pero parece que usted quiere the subtree merge strategy. This article tiene más detalles sobre cómo usarlo.

Básicamente, agrega el repositorio SVN como control remoto, luego use el comando git read-tree para "injertarlo" como un subdirectorio de su repositorio pure git. Dependiendo de cómo quiera que se muestren los historiales, puede hacer git merge -s subtree para fusionarlo en su rama pure-git (se mantienen las confirmaciones de git-svn) o puede seguir los pasos en el segundo enlace y agregar los indicadores --squash y --no-commit y hacer que la fusión aparezca como una única confirmación en la rama pure-git.

Las instrucciones asumen que el control remoto también es un repositorio de git. Si el repositorio local se creó con git en lugar de git-svn, no estoy seguro de qué tan bien funcionará. Es una especie de kludge, pero here are some scripts para hacer un repositorio intermedio que solo refleja un repositorio SVN en git. De esta forma, podría hacer un espejo git-svn del repositorio svn, y agregarlo como control remoto y las instrucciones anteriores deberían funcionar como se describe.

Cuestiones relacionadas