Table des matières

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.

Lien:

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. gitlabber permet aussi de tirer toutes les modifications des dépôts d’un groupe d’un seul coup.

Note:

Il existe aussi 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 :

snippet.shell
pip install gitlabber

Créer un jeton d'accès Gitlab en lecture seule.

Lien:

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 :

snippet.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.

Attention:

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.