80 votes

Différence entre les sous-projets et les sous-modules dans Git ?

Dans Git, y a-t-il une différence entre un "submodule" (tel que créé et géré par la commande git submodule) et un "sous-projet" (littéralement juste un dépôt Git que vous placez à l'intérieur d'un autre dépôt Git), et si oui, quelle est-elle ?

Toute la documentation que j'ai pu trouver à ce sujet est plutôt ambiguë (et dans certains cas, contradictoire). Je pense qu'il n'y a pas de différence, mais je me suis dit que je devais le confirmer et laisser une question à la disposition des nouveaux utilisateurs de Git.

101voto

A sous-projet est un terme générique pour l'un des trois types d'imbrication :

  • Sous-modules fournissent des références semi-fixes du superprojet vers les sous-projets et sont intégrés dans git. Il est mieux utilisé lorsque le sous-projet :
    • est développé par quelqu'un d'autre, n'est pas sous le contrôle administratif du superprojet et suit un cycle de publication différent.
    • contient du code partagé entre les superprojets (surtout lorsque l'intention est de propager les corrections de bogues et les nouvelles fonctionnalités vers d'autres superprojets).
    • sépare des fichiers énormes et/ou nombreux qui nuiraient aux performances des commandes git quotidiennes.
  • Sous-arbres fait en sorte que le référentiel du sous-projet soit importé dans le référentiel du superprojet pour être une partie native du référentiel avec un historique complet, typiquement dans un sous-répertoire spécifique du superprojet.
  • Enveloppes qui fournissent une fonctionnalité de gestion de référentiels multiples à un superprojet avec des sous-projets associés.

Documentation de référence

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X