# Gestion des sous-modules @@ ## Principe Les sous-modules sont utilisés pour **inclure** un dépôt git dans un autre dépôt.
Utile pour séparer le code dans différents dépôts.
Un **sous module** peut être ajouté à plusieurs dépôts. Note: - composants partagés @@

Fonctionnement

L'ajout d'un sous module se fait via la commande suivante : git submodule add <URL> <local-path>

 

Un fichier .gitmodules est créé dans le dépôt.

 

Se comporte comme un git clone.

@@

Configuration

Se comporte comme un dépôt git.

Par défaut clone la branche principale du projet.

Pour se positionner sur un tag, il faut exécuter la commande git dans le dossier du sous module.

Pensez à commiter le fichier .gitmodules.

$ cd reveal

$ git checkout 1.0.0

@@

Mise à jour

La mise à jour s'exécute de cette manière : 

git submodule update --remote --rebase

 

 

remote : pour chercher les modifications distantes.

rebase : pour rejouter l'ordre des commits.

 

Pensez à commiter le fichier .submodule pour figer la nouvelle version.

 

 

@@

Clone

Un dépôt contenant un sous-module devra l'initialiser :

git submodule init

 

Initialiser et mettre à jour les sous-modules d'un coup :

git submodule update --init

 

Les sous-modules peuvent contenir des sous modules eux-même :

git submodule update --init --recursive
@@ ## Conseils Pas de modifications via le dossier sous-module mais directement dans le repository original.
Définir au plus tôt dans le projet les sous-modules.
Penser à suivre les modification distantes.
Utiliser des tags pour les sous module.