Cómo organizar código / activos compartidos en proyectos con repositorios git
Tengo un escenario en el que el proyecto base consta de código java y archivos del sitio web (jsp / html / javascript, plantillas, css, imágenes, etc.).
Las variables de este proyecto base se crean por los siguientes motivos:
a) etiquetado blanco + personalización
b) Un nuevo proyecto basado en este proyecto pero con características adicionales (tanto en java como en archivos web)
Base project
Jav
we
plantilla
css
javascript
imágenes
Proyecto A (basado en la base)
Jav
src / core
src / projectA carpetas específicas
we
plantilla
css
javascript
imágenes
projectA carpetas específicas
Proyecto B (basado en la base)
Jav
src / core
src / projectB carpetas específicas
we
plantilla
css
javascript
imágenes
proyectoB carpetas específicas
Restricciones importantes
a) Tanto el proyecto A como el proyecto B comparten bastante código del proyecto base
b) Además de tener sus propios archivos y código, ProjectA y ProjectB podrían agregar, modificar o eliminar archivos en carpetas web / plantillas, web / css, web / imagen, para personalización y etiquetado blanco
c) Se podrían crear más proyectos como projectA y projectB en el futuro
d) Cuando se cambia el proyecto base, debería ser posible que los cambios se reflejen en los subproyectos
e) Ocasionalmente, los cambios realizados en el proyecto A / proyecto B a archivos comunes se deben volver a plegar en el proyecto bas
Inicialmente, pensé que tendría un repositorio git separado para el proyecto base y cada uno de los Proyectos A, B, etc. Pero teniendo en cuenta particularmente las restricciones anteriores, me parece que los enfoques git subtree o submodule no funcionan (por limitaciones obvias )
Así que tiendo a tener un único repositorio y usar un enfoque de "ramificación" donde projectA y projectB serán ramas y la base será el "maestro". ¿Qué tan bien funciona la restricción (e) en este enfoque?
¿Hay mejores formas de administrar esto en git?