Potion Bottle Icon Manuel d'alchimie du code Potion Bottle Icon

Migration de répertoires de travail de Gitea vers GitLab

- 369 mots - Temps de lecture estimé: 2 minutes

Offre de formation

Potion Bottle IconHéberger ton entreprise ou ton OBNL avec YunohostPotion Bottle Icon

Arrête de payer par utilisateur·ice pour des outils qui analysent tes données. Expérimente l'autohébergement sur un vrai serveur avec Yunohost et ses centaines d'applications libres.

Héberge tes données au Québec

Ce tutoriel détaille un script Python pour migrer des dépôts de Gitea vers GitLab. Il couvre l’extraction des dépôts, leur clonage, la création dans GitLab et la poussée finale.

🌘 Prérequis


Sun Face IconComment migrer des dépôts Git de Gitea vers GitLab avec Python ?Sun Face Icon


La migration de Gitea vers GitLab s’effectue avec un script Python utilisant les bibliothèques requests, pandas, subprocess et os. Le script extrait la liste des dépôts via l’API Gitea, clone chaque dépôt localement, crée le dépôt correspondant dans GitLab (public ou privé selon le namespace), puis pousse le code vers GitLab. Il faut préalablement obtenir des jetons API pour les deux plateformes.


Avant d’exécuter le script, assure-toi :

🌘 Chargement des librairies de code Python requises pour ce projet

import requests
import pandas
import subprocess
import os

🌘 Configuration des jetons API pour Gitea et GitLab

Remplace les chaînes vides par tes jetons API réels.

gitea_token = ""
gitlab_token = ""

🌘 Configuration du répertoire de travail

Créez un répertoire pour stocker les dépôts clonés.

os.mkdir("./git_repos")
os.chdir("./git_repos")

Vérifiez le répertoire actuel :

os.getcwd()

🌘 Extraction des répertoires à déménager et de leur statut public ou privé

Définissez la page à extraire (Gitea pagine les résultats par 30).

page = 1

Récupérez les dépôts via l’API Gitea :

repos = requests.get('https://utilisateur:' + gitea_token + '@apps.mondomaine.com/gitea/api/v1/user/repos?page=' + str(page))

Convertissez la réponse en DataFrame pandas :

repos_data = pandas.read_json(repos.content)

Extrayez les colonnes pertinentes :

urls = repos_data[['name', 'clone_url', 'private']]

🌘 Clone des répertoires de Gitea vers le répertoire de travail

Modifiez les URLs pour inclure l’authentification :

urls.loc[:, "fixed_url"] = [myurl.replace("https://", "https://utilisateur:" + gitea_token + "@") for myurl in urls.clone_url]

Clonez chaque dépôt en mode bare :

for i in urls.fixed_url:
    print(i)
    subprocess.run(['git', 'clone', '--bare', i])

🌘 Création des nouveaux répertoires dans GitLab via API

Créez les dépôts dans GitLab en fonction de leur visibilité :

for index, row in urls.iterrows():
    print(row['name'] + '.git')
    if row['private']:
        new_repo = requests.post('https://git.mondomaine.com/api/v4/projects', data={"private_token": gitlab_token, "name": row['name'], "namespace_id": 4})
    else:
        new_repo = requests.post('https://git.mondomaine.com/api/v4/projects', data={"private_token": gitlab_token, "name": row['name'], "namespace_id": 5})
    print(str(new_repo.status_code) + ': ' + new_repo.reason)

🌘 Pousser les nouveaux répertoires vers GitLab avec git push

Poussez les dépôts vers GitLab en utilisant l’option mirror :

for index, row in urls.iterrows():
    if row['private']:
        remote_url = 'https://oauth2:' + gitlab_token + '@git.mondomaine.com/personnel/' + row['name'] + '.git'
    else:
        remote_url = 'https://oauth2:' + gitlab_token + '@git.mondomaine.com/partage/' + row['name'] + '.git'
    print(remote_url)
    os.chdir("./" + row['name'] + '.git')
    subprocess.run(['git', 'push', '--mirror', remote_url])
    os.chdir("../")

Une fois exécuté, tous vos dépôts seront migrés vers GitLab dans les groupes appropriés.

Offre de service

Candle Light IconLa grande évasion — Migration vers les logiciels libres — à partir de 1 200 $Candle Light Icon

Tu paies des centaines de dollars en abonnements SaaS pour des outils qui ne t’appartiennent pas ? En une heure, on identifie tes besoins, on explore les alternatives libres et on crée ton plan de migration. Le service inclut un plan de recommandation personnalisé pour guider la migration et les étapes suivantes.

Planifie ta migration vers le libre
Abonne-toi au fil RSS pour ne rien manquer.

Étiquettes