Recursive git push / pull?

j'ai un dépôt git qui contient d'autres dépôts git. Y a-t-il des commandes qui poussent et/ou tirent de façon récursive non seulement pour le méta-dépôt mais aussi pour les sous-dépôts?

19
demandé sur David Y. Stephenson 2013-07-10 17:02:19

5 réponses

si vous parlez de sous-modules, voir réponse cupcakes.

si vous parlez d'une hiérarchie de dossiers contenant des repos git, vous pouvez vérifier clustergit, un outil que j'ai programmé: https://github.com/mnagel/clustergit

8
répondu mnagel 2013-07-10 20:32:46

je me retrouve dans la même situation, à chaque fois que je veux mettre à jour mon llvm/clang référentiels et avec un peu de bash aider je le peux "git pull" chacune d'entre elles comme ceci:

$> for dir in $(find . -name ".git"); do cd ${dir%/*}; git pull ; cd -; done

cela va' git pull ' tous les repos git trouvés sous votre répertoire courant, et ne fonctionnera probablement pas s'ils sont des dépôts nus.

9
répondu vguerra 2014-01-19 02:07:50

pas tout à fait git pull, mais à proximité:

git fetch --recurse-submodules

Git docs:

--recurse-submodules[=yes|on-demand|no]

cette option contrôle si et dans quelles conditions de nouvelles propagations de sous-modules peuplés doivent aussi être récupérées. Il peut être utilisé comme option booléenne pour désactiver complètement la récursion lorsqu'elle est définie à no ou pour revenir inconditionnellement dans toutes les sous-modules peuplées lorsqu'elle est définie à yes, ce qui est la valeur par défaut lorsque cette option est utilisée sans aucune valeur. Utiliser sur demande uniquement de manière récursive dans un peuplé de sous-module lorsque le superproject récupère un engageons à ce que les mises à jour de la sous-module de référence pour une livraison qui n'est pas déjà dans les locaux de la sous-module clone.

8
répondu 2013-07-10 13:08:18

je viens d'écrire un script pour l'exécuter récursivement sur plusieurs dépôts git. Vous pouvez le saisir à partir d'ici:

https://github.com/DariuszOstolski/rgit

L'idée est exactement la même que dans clustergit mais la mise en œuvre diffère.

1
répondu Dariusz Ostolski 2014-10-23 19:38:20

j'en avais besoin il y a quelque temps et j'ai mis un cli à disposition par le npm. https://github.com/kenglxn/gitr/blob/master/README.md

il suffit de faire "npm install-g gitr" et ensuite vous pouvez faire n'importe quelle commande de git de façon récursive en utilisant gitr.

0
répondu kenglxn 2015-04-26 09:03:38