Tuesday, 27 January 2015

Git submodules

Durante la preparación de la migración de SVN a GIT (Ver Migrando de svn a git) me encontré con  que en varios proyectos habían varios trunks. El árbol de directorios era algo así:

Proyecto
├── tags
└── trunk
          └── test
                    ├── branches
                    ├── tags
                    └── trunk

Ignorando si esto es o no una buena práctica, probé de que manera hacer lo mismo utilizando GIT, lo que me llevo a probar git submodules.
Aprovechando que GitBlit tiene soporte nativo para los submodules, armé lo siguiente:

Armando los repositorios

En primer lugar, cree diferentes repositorios en GitBlit utilizando el separador / para definir la pertenencia al mismo proyecto. 

Después de crear varios repositorios, la estructura me quedó de esta manera:

Los repositorios "A New Module" y " The New Hope" serían los diferentes componentes de nuestro proyecto, y en "Main Project" estaría el árbol completo.

Armando la estructura

Despues de hacer un git clone del repositorio MainProject, agregué los submodulos mediante los siguientes comandos:
  1. git submodule add ssh://cmarquez@git.ascentio.com.ar:29418/A-New-Project/ANewModule.git ANewModule Para agregar ANewModule
  2. git submodule add ssh://cmarquez@git.ascentio.com.ar:29418/A-New-Project/TheNewHope.git TheNewHope Para agregar TheNewHope


La estructura de carpetas va quedando de la siguiente manera:







Si hacemos un GitStatus, podemos ver que se generó un archivo .gitmodules










Si comiteamos y pusheamos al servidor, vamos a poder ver lo siguiente a través de la interfaz web:


Ahi podemos ver que las carpetas hacen referencia a los otros repositorios. De esta manera, podemos trabajar directamente en un modulo o en la carpeta que contiene todos los modulos, cada uno con un ciclo de evolución diferente.


No comments:

Post a Comment