¿Puedo tener un único repository git que abarque varios directorys aislados?

Tengo un proyecto que tiene componentes en varios directorys diferentes y me gustaría tratar el contenido de esas carpetas como un único repository git.

Por ejemplo, tengo algo así como

  • UN
    • un
    • segundo

y en otra parte

  • 1
    • yo
    • ii

y me gustaría combinarlos en un único repository de git:

  • repo
    • UN ..
    • 1 ..

¿Puedo hacer esto con git?

No, no puedes. Git está diseñado para rastrear los contenidos de una sola jerarquía de directorys. La solución simple es mover todos estos directorys en un superdirectory común. Una alternativa es hacer varios repos y luego combinarlos usando submodules .

Si lo piensas, la mayoría de las distribuciones de fonts están estructuradas de esta manera. Es decir, el layout del repository no refleja el layout de implementación. Hay código fuente en src , que termina comstackdo tal vez en build , y esos artefactos a su vez se instalan en algún lugar como /usr/bin . Probablemente hay un manual, que se ensambla mediante una cadena de herramientas diferente, y se instala en otro lugar en el sistema de destino. Puede haber un website, que se implementa por medios completamente diferentes, en un sistema de destino diferente, etc. Para administrar todo esto, hay un set de scripts de compilation e implementación, algunos de los cuales (estúpidamente) no siempre se rastrean a lo largo de con el rest del sistema

Sin embargo, nada de esto ayuda mucho, más que como un model mental, si no puede encontrar herramientas de implementación para su escenario particular.

Si necesita build su propia secuencia de commands de implementación, probablemente pueda comenzar con algo bastante simple. Con los antecedentes limitados que ha proporcionado, parece que no necesita mucho más que

 while read repo path; do cd "$path" mkdir "$repo" cd "$repo" git init git pull /path/to/repo/"$repo" done<<____HERE A /var/www 1 /srv ____HERE 

Si 'A' y '1' ya tienen sus propios repositorys de git y si desea continuar usando esos repositorys, entonces su única opción es crear un repository de git en 'repo' y luego agregar 'A' y '1' como submodules de git .

Si no te importan los repositorys git existentes en 'A' y '1', simplemente crea un nuevo repository git en 'repo' y agrega todo el contenido de 'A' y '1'.