**Ceci est une ancienne révision du document !**
Cloner tous les dépôts Gitlab d'un coup
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 dans un dossier appelé services
:
- snippet.sh
mkdir services cd services gitlabber -t 'ton jeton' -i '/Picasoft/Technique/Services**' -u https://gitlab.utc.fr/ .
Il suffit ensuite de récupérer les dépôts dans le dossier courant :
- snippet.sh
mv Picasoft/Technique/Services/* . rm -r Picasoft
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.