Git/Sous-modules et Super-projets
Le super-projet est un concept apparu avec Git depuis v1.5.3, ayant pour but de mieux gérer de nombreux dépôts, en distinguant ceux qui sont hors du super-projet, de ceux à l'intérieur que l'on appelle les sous-modules.
Super-projets
modifierUn super-projet est un dépôt Git, que l'on crée via git init
dans le répertoire, puis git submodule add
suivi des archives à inclure :
$ git submodule add ./examples
Adding existing repo at 'examples' to the index
warning: LF will be replaced by CRLF in .gitmodules.
The file will have its original line endings in your working directory.
$
La structure résultante est de la forme suivante :
|- super-projet |- sous-module (archive Git) [a] |- sous-module [b] |- sous-module [c] |- sous-module [d]
Si quelqu'un récupère le super-projet, il trouvera une série de répertoire vide pour chaque sous-module. Pour les utiliser, il faut lancer git submodule init
pour chacun.
Sous-modules
modifierUne archive Git est considérée comme sous-module après avoir exécuté git submodule add
dans un autre dépôt.
Workflow
modifierLe flux de travail des super-projets et des sous-modules dit généralement adhérer à l'ordre :
- Changement du sous-module.
git commit
du sous-modulegit commit
du super-projetgit submodule update
pour envoyer les changements aux différents dépôts antérieurs au super-projet.