¿Cuál es la forma canónica de get files fuera de un repository git, en un repository, sin moverlos?

El problema

Tengo una aplicación que, sin la ayuda suficiente, almacena algunos de sus files de configuration en una location separada de todos sus otros files de configuration. Encontré esto mucho después de configurar la aplicación, y todas las cosas en el directory de files de configuration "principal" están siendo administradas por git.

../app/config/ <-- git controlled

../app/utility/config <-- not

Idealmente, podría agregar las cosas en ../utility/config al primer repository y terminar con eso. Desafortunadamente, git hace que esta operación aparentemente simple sea algo complicada.


  • No sigue los enlaces simbólicos, lo que significa que no puedo simplemente vincular utility/config en el primer repository. Esto sería ideal, pero …

  • Los enlaces duros no permiten directorys, y hacer que la carpeta y el enlace duro de cada file sea una mierda.

  • Cambiar GIT_WORK_TREE para que sea un nivel más alto podría funcionar, pero luego me veo obligado a usar ese command por el rest del time si deseo que la mayoría de los commands de git funcionen.

  • mount --bind funcionaría, pero parece terriblemente hackish, y sería molesto y propenso a errores duplicar en la máquina de otro desarrollador.

  • Mover los files de configuration no es una opción, ya que la aplicación de terceros hace reference a ellos.

  • Crear un nuevo repository y usar submodules funcionaría, pero los submodules son malos, ¿vale?


La pregunta

¿Hay otras opciones fáciles para get estos files en el repository existente sin mover los files o el repository?

Podría hacer un enlace simbólico desde el exterior al dir administrado por git, por ej.

 mv app/utility/config app/config/app_utility_config ln -s app/utility/config app/config/app_utility_config cd app/config git add app_utility_config git commit -m "tracking the app/utility/config"