git Recomendación de buenas prácticas

Estoy buscando configurar repositorys git, pero vengo de un background en SVN.

Esto es lo que quiero:

Repositorios de productos: estos capturan productos individuales independientes (una aplicación, una biblioteca, por ejemplo)

  • Aplicación A
  • Aplicación B
  • Biblioteca C
  • . . .

Repositorios de proyectos: estos capturan agregaciones de productos para formar una solución para un cliente en particular.

  • Repositorio de Project X
  • Repositorio del Proyecto Y
  • Repositorio del Proyecto Z
  • . . .

Cada proyecto se buildá con diferentes combinaciones de productos. Por ejemplo, el Proyecto X está formado por la Aplicación A, la Aplicación B y, a continuación, un código específico del proyecto. El Proyecto Y es la creación de la Aplicación B, la Aplicación C y la Aplicación D con el código y la configuration específicos del proyecto. Entiendes la idea.

En SVN, los repositorys de proyectos usarían SVN-external para include una versión de los productos.

¿Puedo lograr esto con el concepto de repository que he detallado anteriormente o debería pensar en una técnica completamente diferente dado el poder de git?

Considere el uso de submodules de Git. Los detalles se pueden encontrar en el capítulo de Submodules del libro gratuito en línea de Git . Citando del libro:

Los submodules le permiten mantener un repository de Git como un subdirectory de otro repository de Git. Esto le permite clonar otro repository en su proyecto y mantener sus compromisos separados.

en mi compañía nos encontramos con el mismo problema. Solucionamos esto reconsiderando la forma en que nuestros repositorys fueron estructurados y utilizados. En particular:

  • código común se convirtió en bibliotecas compartidas
  • comenzamos a usar un sistema de gestión de packages (rpm) que permitió introducir dependencies. por ejemplo: el proyecto X tiene sus propios files, pero también depende del package A y la biblioteca C