2010-06-19 7 views
6

Actualmente ejecutamos un gran repositorio de subversión, y estoy tratando de moverlo a GIT. El problema es que usa troncos y etiquetas debajo del directorio raíz. Por ejemplo:Importación de Subversion a GIT: problema con los subtrazos

MyDepartment\MyOS\Project1\trunk\    <-- master branch 
MyDepartment\MyOS\Project1\branch\v1   <-- other branch 
MyDepartment\MyOS\Project1\tags\v1_20100101 <-- release tag 

Existen diferentes departamentos, sistemas operativos y muchos proyectos diferentes.

Así que cuando clonar el repositorio SVN usando --stdlayout:

git svn clone --stdlayout http://svn-repository/ 

El clon termina vacía. Sin la opción, obtengo un clon, pero luego las ramas se tratan como directorios en la rama principal.

  1. ¿Hay alguna forma de importar esta estructura de directorios de una vez?
  2. Si escribo un script para importar todos los proyectos por separado, ¿hay alguna manera de combinar las importaciones GIT por proyecto en un gran repositorio GIT?
+1

'--stdlayout' assume' trunk', 'tags',' branch' ** 'es' **. – jfs

Respuesta

0

Busque en Git submodules. Probablemente tengas que importar cada uno de tus subproyectos por separado, pero el resultado puede reflejar un poco mejor tu uso actual.

+0

Desafortunadamente, el libro que leí ("Version Control with Git") desalienta el uso de los submódulos de una manera bastante convincente – Andomar

3

Si understande la pregunta correctamente, usted quiere:

git svn clone 
    --trunk=MyDepartment\MyOS\Project1\trunk 
    --tags=MyDepartment\MyOS\Project1\tags 
    --branches=MyDepartment\MyOS\Project1\branch 
    http://svn-repository/ 

Actualización: se puede incluir más de uno --branches y --tags:

git svn clone 
    --trunk=MyDepartment\MyOS\Project1\trunk 
    --tags=MyDepartment\MyOS\Project1\tags 
    --tags=MyDepartment\MyOS\Project2\tags 
    --tags=OtherDepatment\MyOS\Project1\tags 
    --branches=MyDepartment\MyOS\Project1\branch 
    --branches=MyDepartment\MyOS\Project2\branch 
    --branches=OtherDepartment\MyOS\Project1\branch 
    http://svn-repository/ 

No se puede tener más el tronco evidentemente.

Git está realmente diseñado para admitir un proyecto por repositorio y no proyectos múltiples en un repositorio. Supongo que golpearás muchos problemas tratando de usarlo así.

+0

Hay muchos proyectos diferentes. Puedo guiar la importación para cada proyecto, pero ¿cómo puedo combinarlos en un repositorio de git? – Andomar

+0

Pequeña actualización sobre múltiples ramas y parámetros de etiquetas. ¿Esto ayuda? ¿O quieres que Git adivine automágicamente la compleja estructura de tu repositorio? Yo creo que no es posible. – silk

+0

¿Es posible fusionar múltiples repositorios git en uno solo? – Andomar

Cuestiones relacionadas