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?
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
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.
pas tout à fait git pull
, mais à proximité:
git fetch --recurse-submodules
--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.
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.
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.