Est-il possible qu'un sous-module git soit composé de plusieurs autres sous-modules git et que le super git repo récupère le contenu de chaque sous-module?
J'ai essayé de le faire en utilisant l'approche évidente / naïve de création d'un repo git contenant plusieurs sous-modules.
Ensuite, ajoutez ce repo git à un autre repo git en tant que sous-module.
Ensuite, en essayant d'extraire du répertoire racine du repo super git par git submodule init
et ensuite git submodule update
. Mais cela ne parvient pas à récupérer les sous-sous-modules.
git
git-submodules
premier répondeur
la source
la source
Réponses:
Comme mentionné dans Retrospectively add --recursive to a git repo
devrait marcher.
la source
git submodule init; git submodule update --recursive
était également le cas ci-dessus, mais ce n'est pas le cas.--init
drapeau, les sous-modules, dans l'un de mes sous-modules, sont simplement initialisés avec les anciennes versions, pas les plus récentes.git submodule foreach git pull origin master
, et cela fonctionne partiellement: les sous-modules sont mis à jour, mais parfois ilsHEAD
se détachent et pour les sous-modules dans les sous-modules, je ne peux pas valider les modifications de mon sous-module direct car il a un "contenu modifié" et non de "nouveaux commits" (puisque ses propres sous-modules ont "new commits" et sont mis à jour).Comme Sridhar le commente ci-dessous, à partir de Git1.6.5 +,
git clone --recursive
est maintenant l'alternative officielle, décrite dans:git clone --submodule
"--recursive
à un dépôt git "(avec le
alias $ git config --global alias.cloner = 'clone --recursive'
, ce qui évite d'observer lagit clone
commande normale )inamiy correctement signale la
git submodule update --init --recursive
commande, introduit en commettre b13fd5c , encore une fois dans git1.6.5, par Johan Herland (jherland
) .Et IceFire ajoute dans les commentaires :
(réponse originale plus ancienne)
Selon la page de manuel
devrait mettre à jour tous les sous-modules imbriqués. Mais la partie init peut ne pas être récursive.
En fonction de votre version de Git, vous pouvez revenir à une approche plus "scripting", avec cet article Mise à jour récursive des sous-modules Git qui permet une initialisation et une mise à jour récursives:
la source
git clone --recursive
suffisant?git submodule update --init <submoduleName>
c'est la voie à suivre; Je suis arrivé ici en cherchant cette réponse