Objectif
L'objectif de cet article est d'expliquer comment sauvegarder l'ensemble de ses dépôts Gitlab avec un script utilitaire.
J'ai écris cet script dans le but de pouvoir :
- récupérer tous mes dépôts Gitlab ainsi que toutes les branches associées,
- récupérer tous les dépôts dont j'ai fait un fork ainsi qu'une mise à jour du fork avant récupération,
- récupérer tous les dépots de mes organisations.
Quand le script est exécuté pour la première fois, il va récupérer tous les dépôts si les dépôts ont été précédemment récupérer il fera une mise à jour.
Important:
Les dépôts avec des espaces dans le nom seront récupérés avec remplacement de l'espace par -. Par exemple le dépôt avec nom repo 1 sera récupérer avec le nom repo-1.
Installation
Avant de commencer, vous devez installer Python et Git sur votre machine :
Après installation, vous pouvez cloner le script utilitaire à l'adresse suivante: Gitlab Clone Repo
Préparation
Création des tokens
Allez sur votre compte Gitlab pour générer un token avec l'autorisation de la lecture uniquement comme ci-dessous :
Important:
Si vous voulez mettre à jour les dépôts fork, vous devez donner l'autorisation workflow pour permettre la mise à jour des dépôts. Activez l'option comme ci-dessous :
Initialisation des variables d'environnement
Dans le dossier du dépôt récupéré, créer le fichier .env avec le contenu suivant :
# Domaine Gitlab
DOMAIN = gitlab.com
# Protocol du domaine par défaut https
PROTOCOL = https
# Copier et coller le token que vous avez généré précédemment ici
TOKEN = le_token_genere_ici
# Nom d'utiliateur gitlab
USERNAME = nom_d_utilisateur_gitlab
# Dossier là où sera sauvegardé les dépôts mettre le chemin absolu => exemple /home/toto ou C:\users\toto pour windows
FOLDER = chemin_absolu_du_dossier
Vous devez mettre les valeurs spécifiques comme l'exemple ci-dessous :
Information:
Lors de l'exécution, les dossiers de destination seront créés s'ils n'existent pas.
Exécution
-
Lancez la commande suivante dans le dossier du projet (doit être lancé une fois) :
python -m venv env
ou
python3 -m venv env
ou pour ubuntu
virtualenv venv
Information:
Si vous rencontrer une erreur, veillez vérifier sur le lien suivant: https://gist.github.com/frfahim/73c0fad6350332cef7a653bcd762f08d -
Lancez la commande suivante pour activer l'environnement :
source env/bin/activate
ou sur windows
env\Scripts\activate.bat
-
Installez les modules à partir de la commande :
pip install -r requirements.txt
Lancez le script de sauvegarde avec la commande :
python main.py
orpython3 main.py
Et voilà à la fin vous aurez tous les dépôts dans le dossier de destination.
Information:
Notez que pour chaque exécution, vous avez le journal généré dans le dossier du script utilitaire dans le sous-dossier logs.
Pour la version avec Github vous pouvez visiter Sauvegarde Github.
Top comments (3)
Hello, merci pour le partage.
Tu fais simplement un clone de tous les dépôts dans un dossier, ce que tu peux faire aussi par un glab repo clone -g -a=false -p --paginate
Merci pour le partage.
Cette commande il me semble qu'elle clone dans le dossier les repos si elle n'existe le script il met à jour en plus le repo si déjà cloné et aussi pour fork récupère les dernières mise à jour sur le repo d'origine.
Ah nice !