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
Un 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
Une archive Git est considérée comme sous-module après avoir exécuté git submodule add dans un autre dépôt.
Workflow
Le flux de travail des super-projets et des sous-modules dit généralement adhérer à l'ordre :
- Changement du sous-module.
git commitdu sous-modulegit commitdu super-projetgit submodule updatepour envoyer les changements aux différents dépôts antérieurs au super-projet.