Necesitará un repositorio para cada una de las partes. (cada proyecto y uno o más para las partes compartidas).
Para incluir estas partes compartidas hay dos posibilidades.
Primero, el más fácil, creas una gema (privada) para las partes compartidas, lo que significa que no necesitas vincular nada, solo agrega gem [gemname] a tu Gemfile. Cuando actualice la gema, todos los proyectos usarán el código modificado.
Cuando desee incluir el código externo en su proyecto, necesita un poco de organización. Crea un mapa raíz donde clona tanto el repositorio compartido como el de proyecto. Luego, crea un enlace simbólico (relativo) a la carpeta de código compartido. Simplemente puede agregar este enlace simbólico a su repositorio git y confirmarlo. Debe actualizar y confirmar ambos repositorios por separado.
Un ejemplo del segundo método:
- projectfolder
--- shared code
--- project code
----- lib
------- shared (link to shared code)
El enlace de código compartido es creado por el comando ln -s "código ../../../shared" compartida
Por supuesto, esto solo funciona en sistemas compatibles con enlaces simbólicos (mac y * nix)