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.

  1. 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.
  2. 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.
  3. 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.

commande d’ajout de sous-module git

Nous pouvons maintenant exécuter la commande git status comme indiqué ci-dessous.

$ git status

commande d’état git

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.