Remarque: cela date de 2009 et peut-être bien alors, mais il existe de meilleures options maintenant.
Nous utilisons cela. Cela s'appelle git-pup
:
#!/bin/bash
# Exists to fully update the git repo that you are sitting in...
git pull && git submodule init && git submodule update && git submodule status
Placez-le simplement dans un répertoire bin approprié (/ usr / local / bin). Si sous Windows, vous devrez peut-être modifier la syntaxe pour la faire fonctionner :)
Mise à jour:
En réponse au commentaire de l'auteur original sur le retrait de toutes les TÊTES de tous les sous-modules - c'est une bonne question.
Je suis presque sûr que cela git
n'a pas de commande pour cela en interne. Pour ce faire, vous devez identifier ce qu'est réellement HEAD pour un sous-module. Cela pourrait être aussi simple que de dire que master
c'est la branche la plus à jour, etc ...
Ensuite, créez un script simple qui effectue les opérations suivantes:
- vérifier les
git submodule status
référentiels "modifiés". Le premier caractère des lignes de sortie l'indique. Si un sous-repo est modifié, vous ne voudrez PAS continuer.
- pour chaque dépôt répertorié, cd dans son répertoire et exécutez
git checkout master && git pull
. Vérifiez les erreurs.
- À la fin, je vous suggère d'imprimer un affichage à l'utilisateur pour indiquer l'état actuel des sous-modules - peut-être les inciter à tout ajouter et à valider?
Je voudrais mentionner que ce style n'est pas vraiment ce pour quoi les sous-modules git ont été conçus. En règle générale, vous voulez dire que "LibraryX" est à la version "2.32" et restera ainsi jusqu'à ce que je lui dise de "mettre à niveau".
C'est, dans un sens, ce que vous faites avec le script décrit, mais de manière plus automatique. Il faut faire attention!
Mise à jour 2:
Si vous êtes sur une plate-forme Windows, vous voudrez peut-être envisager d'utiliser Python pour implémenter le script car il est très capable dans ces domaines. Si vous êtes sous unix / linux, alors je suggère juste un script bash.
Besoin de clarifications? Postez simplement un commentaire.