{{indexmenu_n>15}} # Cloner tous les dépôts Gitlab d'un groupe ## Contexte Depuis la séparation des la configuration des services en différents dépôts, il est difficile d'effectuer des modifications qui impactent tous les services (exemple : changement du format de fichier Compose). On voudrait bien, par exemple, récupérer tous les dépôts des services d'un coup. Pour rappel, le groupe Gitlab avec les services est ici : https://gitlab.utc.fr/picasoft/projets/services Git ne permet pas de faire ce genre d'opérations, puisque les *groupes* sont un concept de Gitlab. On va utiliser un outil très sympa : [gitlabber](https://github.com/ezbz/gitlabber). `gitlabber` permet aussi de tirer toutes les modifications des dépôts d'un groupe d'un seul coup. Il existe aussi [ghorg](https://github.com/gabrie30/ghorg), orienté GitHub et Gitlab, mais qui effectue des opérations dangereuses au pull, comme `git clean`, qui efface tous les fichiers non-tracké. Ce n'est pas le bon cas d'usage pour nous. ## Préparation Installation `gitlabber` : ```shell pip install gitlabber ``` Créer un [jeton d'accès Gitlab](https://docs.gitlab.com/ee/user/profile/personal_access_tokens.html#create-a-personal-access-token) **en lecture seule**. Le plus rapide est de passer par ce lien : https://gitlab.utc.fr/-/profile/personal_access_tokens. Les permissions à accorder sont `read_api` et `read_repository`. Tu peux donner un nom parlant, comme `gitlabber`, pour te souvenir. Une fois le jeton créé, ajouter le dans tes mots de passe: il ne sera plus jamais affiché. :-p ## Utilisation Exemple pour cloner tout l'arbre des services : ```sh gitlabber -t 'ton jeton' -i '/Picasoft/Technique/Services**' -u https://gitlab.utc.fr/ . ``` Un nouvel appel de la commande du même endroit fera un `git pull`. Le chemin utilisé pour indiquer le groupe à cloner utilise le nom du groupe, pas son URL. L'option `-p`, utilisée sans le `-i`, permet d'afficher un arbre de l'ensemble des groupes auxquels tu appartiens.