Aujourd'hui, j'ai dû cloner tous les dépôts d'un groupe gitlab. Il y en avait 17. Ça m'a saoulé. J'ai entrepris de faire autrement.
Prérequis
- Si jamais votre clef ssh a une passphrase, pensez à faire
ssh-add, ça vous évitera de rentrer la passphrase pour chaque dépot. export GITLAB_TOKEN=<votre jeton gitlab>export GITLAB_GROUP=<id du groupe gitlab>
Commande
curl --silent --header "Private-Token: $GITLAB_TOKEN" \ https://gitlab.com/api/v4/groups/$GITLAB_GROUP/projects\?include_subgroups=true \ | jq -r '.[].ssh_url_to_repo' | xargs -I _ git clone _
Informations :
--silentdecurlest là pour éviter de voir le téléchargement curl- remplacez gitlab.com éventuellement par votre instance gitlab
-rdejqest là pour éviter les quotes dans la sortie jq.[].ssh_url_to_repova chercher la clefssh_url_to_repodans chaque sortie du tableau json envoyé par curlxargs -I _va exécuter la commande qui suit une fois par ligne remontée par jq, remplaçant_par la ligne en question.