Git equivalente de file externo en svn

¿Hay un git equivalente a files externos svn o cualquier otra forma de emular files externos en git ?

Antecedentes: tenemos un proyecto común que en parte hacemos reference de otros proyectos.

Con los submodules de git , por lo que yo sé, solo se pueden hacer reference a los repositorys , pero no a las subcarpetas o files individuales.

Básicamente, necesitamos un sistema de control de versiones distribuidas que admita elementos externos como svn.

Parece que git no proporciona lo que necesitamos. ¿Estoy en lo cierto? Por favor, demuéstrame que estoy mal


Detalles:

Tenemos un repository svn bastante grande que contiene varios proyectos. Cada proyecto infantil depende del proyecto base. Pero cada proyecto secundario solo necesita ciertos files o carpetas del proyecto base, dependiendo del proyecto hijo. Así que utilizamos files externos de carpetas y files con y sin número de revisión para resolver esas dependencies.

El proyecto base tiene la siguiente estructura:

BASE - libs -- dll1.dll - doc -- howto.doc - maps.csv - cols.csv - misc.ini - fun.png 

Un proyecto hijo hace reference al proyecto base utilizando elementos externos como ese:

 "Base/libs@27" inspect "Base/doc" doc "Base/calibration/map.csv@14" map/default.csv "Base/calibration/cols.csv@56" cols/default.csv 

Una alternativa al submodule de Git es Git Subtrees, que se parece a lo que estás buscando.

Más información en http://git-scm.com/book/en/v1/Git-Tools-Subtree-Merging

No he encontrado una solución limpia para esto, pero hay una serie de soluciones.

El más limpio parece ser include Base en su totalidad en una location secundaria, utilizando submodules o fusión de subtreees, y luego usar enlaces simbólicos en los files individuales para ubicarlos donde realmente los necesita.

Esto no parece muy limpio, y en particular, include diferentes versiones de Base para satisfacer su requisito de "con y sin número de revisión" podría ser muy complicado, pero aún no he visto una alternativa limpia.