HOWTO · Git
Liste des submodules de Git
Cet article explique comment fonctionnent les sous-modules Git.
Sur cette page
Dans cet article, nous aborderons les sous-modules Git. Nous couvrirons ce qu’ils sont, le but des sous-modules et le flux de travail général.
Les sous-modules Git nous permettent de conserver un référentiel en tant que sous-répertoire d’un autre référentiel. En termes plus simples, les sous-modules sont une référence à d’autres référentiels à certains moments.
Qu’est-ce qu’un sous-module Git
Si l’explication ci-dessus n’a pas clarifié les choses, celle-ci devrait le faire.
Un sous-module Git peut être assimilé à un enregistrement dans un référentiel hôte qui fait référence à un commit dans un autre référentiel. En général, les sous-modules sont statiques et suivent les commits spécifiés.
Ils ne suivent pas les branches ou les références et ne sont pas mis à jour lorsque des modifications sont transmises au référentiel hôte.
Git crée un fichier .gitmodules à chaque fois que nous créons un sous-module dans notre repo. Le fichier contient les métadonnées et le mappage du sous-module avec notre dépôt.
La création de plusieurs sous-modules entraînera la création de plusieurs fichiers gitmodules.
Créer un sous-module Git
La première question que nous devons nous poser est de savoir quand créer un sous-module ?
Voici quelques scénarios dans lesquels il est préférable de créer un sous-module Git.
- Lorsqu’un sous-projet ou un composant externe change rapidement, il est préférable de verrouiller votre code sur un commit spécifique. Il en va de même si vous anticipez des changements à venir susceptibles de casser l’API.
- Lors du suivi des composants en tant que dépendances du fournisseur. Cela se produit généralement lorsque nous ne mettons pas à jour régulièrement un composant spécifique.
- Lorsque nous voulons intégrer des changements d’un tiers à un moment précis. Cela fonctionne mieux lorsque vous n’avez pas de mises à jour fréquentes.
Commandes Git courantes pour les sous-modules
Examinons quelques options d’utilisation courantes sur notre ligne de commande.
Ajouter un sous-module Git
Nous utilisons la commande git add submodule pour créer un nouveau sous-module dans notre référentiel hôte. Voici le workflow typique lors de la création de sous-modules Git.
$ git submodule add <Repo URL>
La commande git submodule add nécessite un paramètre d’URL qui pointe vers un référentiel. Git clonera le sous-module et nous pourrons exécuter la commande git status pour voir le nouvel état du dépôt.
Prenons un exemple. Ajoutons un sous-module à notre référentiel Delftscopetech.
Nous pouvons maintenant exécuter la commande git status comme indiqué ci-dessous.
$ git status
Comme vu ci-dessus, nous avons maintenant deux nouveaux fichiers, .gitmodules et Learn-Submodules. Nous pouvons ajouter les fichiers et valider les modifications.
git submodule init
Nous exécutons la commande git submodule init pour copier le mappage de notre sous-module du fichier .gitmodules dans notre fichier de configuration local. Il entre en jeu lorsque nous avons plusieurs sous-modules dans notre référentiel.
Lister les sous-modules dans Git
La commande git submodule init s’appuie sur le fichier .gitmodules. Nous pouvons afficher une liste de tous les sous-modules en nous appuyant sur le même fichier.
Tout d’abord, nous devrons analyser le fichier. Nous courrons:
$ git config --file .gitmodules --name-only --get-regexp path
Ensuite, nous pouvons exécuter :
$ git config --file .gitmodules --get-regexp path | awk '{ print $2 }'
La commande ci-dessus affichera le chemin vers les sous-modules présents dans votre référentiel.