Proyectos construidos el uno del otro

Estoy desarrollando PHP, usando el framework Kohana (la pregunta no tiene nada que ver con PHP o Kohana, así que sigue leyendo).

Esto significa que empiezo todos mis proyectos clonando el repo de Kohana de Github y empiezo a build mi aplicación.

Paso 1: la aplicación base

Sin embargo, para hacer mi vida más fácil, creé un repository, llamémoslo base-app , donde personalicé el marco para mis necesidades.
Básicamente, creé la estructura de carpetas para files estáticos, agregué algunos files JS y CSS que usaré en todos mis proyectos futuros (como normalize.css, jquery.js, my JS framework, etc.). También registré algunos submodules que escribí, y empujé este nuevo repository a un control remoto.
¡Estupendo! Ahora tengo una aplicación base (me gusta llamarlo esqueleto ), puedo clonar cada vez que comienzo un nuevo proyecto.

Paso 2: Autenticación

En la mayoría de las aplicaciones, también necesitamos un sistema de authentication. Entonces continué desarrollando.
auth un submodule de auth para ayudarme con eso, pero también necesitaba crear algunas vistas, controlleres, también files JS y CSS (que no puedo simplemente poner en un submodule) para el login , recover-password , reset-password , páginas etc. Nombrado el repo base-app-auth , y empujado a un control remoto.

¡Estupendo! Ahora tengo un nuevo repository: base-app-auth basado en la base-app , puedo clonar cuando quiero crear una aplicación con un sistema de inicio de session (controlleres, models, vistas, js, css) ya implementado.

Paso 3: counts y pagos

En al less dos de mis proyectos futuros (y tal vez muchos otros) también necesitaré una solución para administrar counts (suscripciones) y pagos.
Entonces continué desarrollando. Basado en base-app-auth implementé una solución para aceptar pagos (a través de PayPal) y administrar suscripciones. Este repository también tiene nuevas vistas, controlleres, models, pero también nuevos files css y js. (No, no puedo simplemente ponerlos en un submodule).

¡Estupendo! Ahora tengo un repository que puedo clonar cuando quiero crear una nueva aplicación con un sistema de inicio de session y administración de counts / pagos ya implementada.

El problema:

El problema es que ahora tengo 3 repositorys. Mantenerlos sincronizados es un dolor en el * .

Quiero decir, cuando corrijo un error en la base-app o desarrollo una nueva característica en él, también quiero que los otros dos repositorys tengan estos cambios. Así que tengo que clonar a los otros dos y extraer los cambios de base-app , luego empujarlos de nuevo a control remoto.

Estoy buscando una mejor solución.

Una posible solución:

Una posible solución, puedo pensar, es tener las 3 "aplicaciones" en un único repository (porque en realidad es una sola aplicación) en diferentes twigs. Entonces, cuando empiezo un proyecto, clono el repository y decido qué twig hacer el pago.

Si no necesito la authentication y la function de administración de counts y pagos, pago por la sucursal de la base-app . Si necesito authentication pero no necesito counts y pagos, pago por la twig base-app-auth , y así sucesivamente.

¿Es esta una buena solución? Hay alguno mejor? ¿Cuál es una buena forma de administrar estos proyectos "en cascada" en Git?