Puedo sugerir otra solución (alternativa a los submódulos git ) para su problema - herramienta gil (enlaces git)
Permite describir y administrar dependencias complejas de repositorios git.
También proporciona una solución al problema de dependencia de submódulos recursivos git .
Considere que tiene las siguientes dependencias del proyecto:
ejemplo de gráfico de dependencia del repositorio git
Luego puede definir el .gitlinks
archivo con la descripción de la relación de repositorios:
# Projects
CppBenchmark CppBenchmark https://github.com/chronoxor/CppBenchmark.git master
CppCommon CppCommon https://github.com/chronoxor/CppCommon.git master
CppLogging CppLogging https://github.com/chronoxor/CppLogging.git master
# Modules
Catch2 modules/Catch2 https://github.com/catchorg/Catch2.git master
cpp-optparse modules/cpp-optparse https://github.com/weisslj/cpp-optparse.git master
fmt modules/fmt https://github.com/fmtlib/fmt.git master
HdrHistogram modules/HdrHistogram https://github.com/HdrHistogram/HdrHistogram_c.git master
zlib modules/zlib https://github.com/madler/zlib.git master
# Scripts
build scripts/build https://github.com/chronoxor/CppBuildScripts.git master
cmake scripts/cmake https://github.com/chronoxor/CppCMakeScripts.git master
Cada línea describe el enlace git en el siguiente formato:
- Nombre único del repositorio
- Ruta relativa del repositorio (iniciada desde la ruta del archivo .gitlinks)
- Repositorio de Git que se utilizará en el comando git clone Repositorio de ramificación para pagar
- La línea vacía o la línea que comienza con # no se analiza (se trata como un comentario).
Finalmente, debe actualizar su repositorio de muestras raíz:
# Clone and link all git links dependencies from .gitlinks file
gil clone
gil link
# The same result with a single command
gil update
Como resultado, clonará todos los proyectos necesarios y los vinculará entre sí de la manera adecuada.
Si desea confirmar todos los cambios en algún repositorio con todos los cambios en los repositorios vinculados secundarios, puede hacerlo con un solo comando:
gil commit -a -m "Some big update"
Los comandos Pull, Push funcionan de manera similar:
gil pull
gil push
La herramienta Gil (enlaces git) admite los siguientes comandos:
usage: gil command arguments
Supported commands:
help - show this help
context - command will show the current git link context of the current directory
clone - clone all repositories that are missed in the current context
link - link all repositories that are missed in the current context
update - clone and link in a single operation
pull - pull all repositories in the current directory
push - push all repositories in the current directory
commit - commit all repositories in the current directory
Más información sobre el problema de dependencia de submódulos recursivos de git .