2011-08-16 17 views
8

Nuestro equipo se encuentra actualmente en el proceso de pasar de SVN a Git. Actualmente usamos Maven como nuestra herramienta de construcción.Organización de proyectos usando Maven + Git

Actualmente nuestros proyectos tienen una jerarquía de compilación a través de Maven, pero son planos en el lado de jerarquía de archivos/repositorio. Mi objetivo es hacer coincidir más estrechamente la jerarquía de compilación de Maven y la jerarquía de estructura de archivos en nuestros repositorios para que todo sea más fácil de comprender.

Mi pregunta es ¿cuál es el nivel adecuado para crear repositorios Git para que se mantenga la jerarquía/organización del archivo? Ejemplo:

  • gran proyecto - (sin fuente de aquí, sólo un POM)
    • backend Proyecto (fuente + POM)
    • clientes (sin fuente de aquí, sólo una pom)
      • Consola (fuente + pom)
      • Web (fuente + POM)

Así que el proyecto "solamente pom" sería utilizado para proyectos de código reales del grupo. Pero, ¿a dónde pertenece el repo de Git? Algunos miembros del equipo están preocupados de que el proyecto Web no pertenezca al historial del proyecto Console. Pero si los repositorios Git están en los niveles más bajos (los nodos hoja del árbol), perdemos la organización de estructura de archivos (aunque la jerarquía de compilación se puede mantener en Maven).

Editar: La preocupación del miembro del equipo no era tanto con el historial de confirmaciones como con el etiquetado. Teniendo en cuenta que la raíz repositorio git está en el gran proyecto, y quiero etiquetar el proyecto Web (mediante el etiquetado de la gran proyecto), ¿por qué esa etiqueta incluirá el proyecto consola, que tal vez no en relevante a la etiqueta Web?

+0

¿Cómo manejas esto en SVN? Supongo que tienes una estructura como la descrita. Simplemente revisó el proyecto grande y todo lo demás se insertará en el disco duro ... entonces, ¿por qué le gustaría cambiar esto? – khmarbaise

Respuesta

5

Tengo un proyecto maven que consta de más de 60 módulos, y mi equipo ha discutido la misma cuestión de dónde deberían estar exactamente las raíces del repositorio de git. Hasta el momento, cada discusión ha terminado con dejar todo el proyecto, todo el camino hasta la raíz pom, en el mismo proyecto. La decisión se basa principalmente en la conveniencia del desarrollador: no tenemos que clonar y abrir múltiples repositorios diferentes para trabajar en lo que básicamente es el mismo proyecto. La cuestión de la historia me parece falsa. A quién le importa si la historia se mezcla? Siempre puede ver el historial de un archivo/módulo/ruta particular en git, excluyendo cualquier otro.

Una opción que hemos considerado es algo llamado git submodules, que le permite insertar repositorios dentro de repositorios. Esta podría ser una opción para organizar su jerarquía si decide dividirla.

+0

+1 para un solo proyecto. A diferencia de Subversion y otras herramientas antiguas, esto no es un cuello de botella. –

+0

¿Qué herramientas utilizas? Tengo una configuración similar, con 20 módulos algo maven en un único repositorio git, que contiene ± 800000 líneas de código. Tengo problemas graves de rendimiento en Eclipse usando Egit debido a reindexación constante ... – verhage

+0

Usamos IntelliJ, que lo maneja bastante bien, especialmente desde la versión 12, pero en el año y medio transcurrido desde esta pregunta, nos hemos movido hacia módulos giratorios como sus propios proyectos viven en sus propios repositorios, en parte para evitar problemas de rendimiento IDE. Este enfoque presenta su propio conjunto de problemas pero también tiene otros beneficios. –

0

Sugeriría dejar la estructura en Git igual que en SVN lo que significa un solo repositorio de Git con todo el proyecto en él.El punto es que puedes utilizar el complemento de lanzamiento de Maven sin ningún problema para este tipo de compilaciones de varios módulos.

Cuestiones relacionadas