Je suis l'auteur de l' outil gil (git links)
J'ai une solution alternative au problème - outil gil (git links)
Il permet de décrire et de gérer des dépendances complexes de référentiels git.
Il fournit également une solution au problème de dépendance des sous-modules récursifs git .
Considérez que vous avez les dépendances de projet suivantes:
exemple de graphique de dépendance de référentiel git
Ensuite, vous pouvez définir le .gitlinks
fichier avec la description de la relation des référentiels:
# 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
Chaque ligne décrit le lien git au format suivant:
- Nom unique du référentiel
- Chemin relatif du référentiel (à partir du chemin du fichier .gitlinks)
- Dépôt Git qui sera utilisé dans la branche de dépôt de la commande git clone pour récupérer
- Les lignes vides ou commençant par # ne sont pas analysées (traitées comme des commentaires).
Enfin, vous devez mettre à jour votre référentiel d'exemples racine:
# Clone and link all git links dependencies from .gitlinks file
gil clone
gil link
# The same result with a single command
gil update
En conséquence, vous clonerez tous les projets requis et les lierez les uns aux autres de manière appropriée.
Si vous souhaitez valider toutes les modifications dans certains référentiels avec toutes les modifications dans les référentiels liés enfants, vous pouvez le faire avec une seule commande:
gil commit -a -m "Some big update"
Les commandes Pull, Push fonctionnent de la même manière:
gil pull
gil push
L'outil Gil (git links) prend en charge les commandes suivantes:
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
En savoir plus sur le problème de dépendance des sous-modules récursifs git .