📝 Updated README.MD

main
Hugo ODY 4 days ago
parent c57269dcfd
commit 8fdcdc23b9

@ -1,10 +1,13 @@
# 🚀 Gitea to GitHub Migration Tool # 🚀 Outil de Migration Git Multi-Providers
Ce projet fournit un outil pratique et modulable pour migrer vos repositories de Gitea vers GitHub automatiquement. Cet projet fournit un outil pratique et modulable pour migrer automatiquement vos repositories entre différents providers Git.
## ✨ Fonctionnalités ## ✨ Fonctionnalités
- **Migration automatique** : Migre tous vos repositories Gitea vers GitHub en une seule commande - **Migration multi-providers** : Supporte plusieurs providers source et destination
- **Providers supportés** :
- **Sources** : Gitea, GitLab
- **Destinations** : GitHub, GitLab
- **Mode interactif par défaut** : Interface élégante pour sélectionner/déselectionner les repos à migrer - **Mode interactif par défaut** : Interface élégante pour sélectionner/déselectionner les repos à migrer
- **Vision complète** : Voit tous les repositories accessibles (vos repos + ceux d'organisations) - **Vision complète** : Voit tous les repositories accessibles (vos repos + ceux d'organisations)
- **Sélection intelligente** : Vos repositories sont pré-sélectionnés, les autres sont désélectionnés par défaut - **Sélection intelligente** : Vos repositories sont pré-sélectionnés, les autres sont désélectionnés par défaut
@ -13,13 +16,14 @@ Ce projet fournit un outil pratique et modulable pour migrer vos repositories de
- **Interface en ligne de commande** : Interface colorée et intuitive avec navigation au clavier - **Interface en ligne de commande** : Interface colorée et intuitive avec navigation au clavier
- **Logging complet** : Suivi détaillé des opérations avec fichier de log - **Logging complet** : Suivi détaillé des opérations avec fichier de log
- **Gestion des erreurs** : Robuste avec gestion gracieuse des erreurs - **Gestion des erreurs** : Robuste avec gestion gracieuse des erreurs
- **Architecture extensible** : Facilement extensible pour ajouter de nouveaux providers
## 🛠 Installation ## 🛠 Installation
1. **Clonez le repository** : 1. **Clonez le repository** :
```bash ```bash
git clone https://github.com/votre-username/GiteaToGithubMigrator.git git clone https://github.com/votre-username/GitMigrator.git
cd GiteaToGithubMigrator cd GitMigrator
``` ```
2. **Configuration automatique** : 2. **Configuration automatique** :
@ -32,19 +36,53 @@ Le script va automatiquement :
- Installer toutes les dépendances - Installer toutes les dépendances
- Créer le fichier de configuration `.env` - Créer le fichier de configuration `.env`
Cela créera un fichier `.env` que vous devrez remplir avec vos informations : Cela créera un fichier `.env` que vous devrez remplir avec vos informations selon les providers choisis.
## 🔧 Configuration
### Configuration basique (Gitea → GitHub)
```env ```env
# Gitea Configuration # Source Provider
SOURCE_PROVIDER=gitea
GITEA_URL=https://votre-instance-gitea.com GITEA_URL=https://votre-instance-gitea.com
GITEA_TOKEN=votre_token_gitea GITEA_TOKEN=votre_token_gitea
GITEA_USERNAME=votre_nom_utilisateur_gitea GITEA_USERNAME=votre_nom_utilisateur_gitea
# GitHub Configuration # Destination Provider
DESTINATION_PROVIDER=github
GITHUB_TOKEN=votre_token_github
GITHUB_USERNAME=votre_nom_utilisateur_github
```
### Configuration GitLab → GitHub
```env
# Source Provider
SOURCE_PROVIDER=gitlab
GITLAB_URL=https://gitlab.com
GITLAB_TOKEN=votre_token_gitlab
GITLAB_USERNAME=votre_nom_utilisateur_gitlab
# Destination Provider
DESTINATION_PROVIDER=github
GITHUB_TOKEN=votre_token_github GITHUB_TOKEN=votre_token_github
GITHUB_USERNAME=votre_nom_utilisateur_github GITHUB_USERNAME=votre_nom_utilisateur_github
``` ```
### Configuration GitLab → GitLab (migration entre instances)
```env
# Source Provider
SOURCE_PROVIDER=gitlab
GITLAB_URL=https://gitlab-source.com
GITLAB_TOKEN=votre_token_gitlab_source
GITLAB_USERNAME=votre_nom_utilisateur_source
# Destination Provider
DESTINATION_PROVIDER=gitlab
GITLAB_DEST_URL=https://gitlab-destination.com
GITLAB_DEST_TOKEN=votre_token_gitlab_dest
GITLAB_DEST_USERNAME=votre_nom_utilisateur_dest
```
## 🔑 Configuration des tokens ## 🔑 Configuration des tokens
### Token Gitea ### Token Gitea
@ -53,6 +91,13 @@ GITHUB_USERNAME=votre_nom_utilisateur_github
- `repo` (accès complet aux repositories) - `repo` (accès complet aux repositories)
- `user` (accès aux informations utilisateur) - `user` (accès aux informations utilisateur)
### Token GitLab
1. Allez dans **Settings****Access Tokens** ou **User Settings** → **Access Tokens**
2. Créez un **Personal Access Token** avec les permissions :
- `read_api` (lecture des informations API)
- `read_repository` (lecture des repositories)
- `write_repository` (écriture des repositories - pour destination)
### Token GitHub ### Token GitHub
1. Allez dans **Settings****Developer settings****Personal access tokens** → **Tokens (classic)** 1. Allez dans **Settings****Developer settings****Personal access tokens** → **Tokens (classic)**
2. Cliquez sur **Generate new token (classic)** 2. Cliquez sur **Generate new token (classic)**
@ -89,7 +134,7 @@ Après avoir configuré vos tokens dans le fichier `.env`, utilisez le script de
./run.sh --verbose ./run.sh --verbose
``` ```
> **💡 Alternative** : Vous pouvez aussi utiliser directement `python migrate.py` si vous avez activé l'environnement virtuel (`source venv/bin/activate`) > **💡 Alternative** : Vous pouvez aussi utiliser directement `python main.py` si vous avez activé l'environnement virtuel (`source venv/bin/activate`)
## 🎯 Mode Interactif ## 🎯 Mode Interactif
@ -112,14 +157,14 @@ Le mode interactif (activé par défaut) offre une **interface utilisateur élé
Après la sélection, l'outil propose de renommer les repositories : Après la sélection, l'outil propose de renommer les repositories :
- **Y** : Ouvrir l'interface de renommage - **Y** : Ouvrir l'interface de renommage
- **N/ENTRÉE** : Conserver les noms actuels - **N/ENTRÉE** : Conserver les noms actuels
- **Validation automatique** des noms de repositories GitHub - **Validation automatique** des noms de repositories pour le provider de destination
### Fonctionnalités : ### Fonctionnalités :
- ✅ **Checkboxes visuelles** avec émojis - ✅ **Checkboxes visuelles** avec émojis
- 👤 **Distinction propriétaire** : Vos repos vs repos d'autres utilisateurs - 👤 **Distinction propriétaire** : Vos repos vs repos d'autres utilisateurs
- 🎯 **Sélection intelligente** : Vos repos pré-sélectionnés par défaut - 🎯 **Sélection intelligente** : Vos repos pré-sélectionnés par défaut
- 📋 **Tri intelligent** : Vos repos en premier, puis les autres, tous par ordre alphabétique - 📋 **Tri intelligent** : Vos repos en premier, puis les autres, tous par ordre alphabétique
- ✏️ **Renommage optionnel** : Possibilité de renommer les repos sur GitHub - ✏️ **Renommage optionnel** : Possibilité de renommer les repos sur le provider de destination
- 📄 **Pagination automatique** (15 repos par page) - 📄 **Pagination automatique** (15 repos par page)
- 🎨 **Interface colorée** avec mise en surbrillance et séparateurs visuels - 🎨 **Interface colorée** avec mise en surbrillance et séparateurs visuels
- 📊 **Compteur en temps réel** des repos sélectionnés - 📊 **Compteur en temps réel** des repos sélectionnés
@ -128,27 +173,39 @@ Après la sélection, l'outil propose de renommer les repositories :
## 📋 Exemples d'utilisation ## 📋 Exemples d'utilisation
### Exemple 1 : Migration interactive (défaut) ### Exemple 1 : Migration Gitea → GitHub (défaut)
```bash ```bash
# Configuration dans .env
SOURCE_PROVIDER=gitea
DESTINATION_PROVIDER=github
# Interface interactive pour sélectionner les repos # Interface interactive pour sélectionner les repos
./run.sh ./run.sh
``` ```
### Exemple 2 : Migration automatique ### Exemple 2 : Migration GitLab → GitHub
```bash ```bash
# Migre tous vos repositories automatiquement # Configuration dans .env
SOURCE_PROVIDER=gitlab
DESTINATION_PROVIDER=github
# Migration automatique
./run.sh --no-interactive ./run.sh --no-interactive
``` ```
### Exemple 3 : Migration sélective ### Exemple 3 : Migration GitLab → GitLab (entre instances)
```bash ```bash
# Migre seulement les repositories spécifiés # Configuration dans .env
SOURCE_PROVIDER=gitlab
DESTINATION_PROVIDER=gitlab
# Migration sélective
./run.sh --repos projet-web api-backend ./run.sh --repos projet-web api-backend
``` ```
### Exemple 4 : Migration depuis une organisation ### Exemple 4 : Migration depuis une organisation
```bash ```bash
# Migre un repository d'une organisation # Migre un repository d'une organisation (fonctionne avec tous les providers)
./run.sh --repos mon-org/projet-important ./run.sh --repos mon-org/projet-important
``` ```
@ -157,7 +214,7 @@ Après la sélection, l'outil propose de renommer les repositories :
# 1. Setup initial # 1. Setup initial
./run.sh --setup ./run.sh --setup
# 2. Éditez le fichier .env avec vos credentials # 2. Éditez le fichier .env avec vos credentials et providers
nano .env nano .env
# 3. Listez vos repositories disponibles # 3. Listez vos repositories disponibles
@ -192,23 +249,49 @@ Tous les logs sont également sauvegardés dans `migration.log`.
## 🔧 Structure du projet ## 🔧 Structure du projet
``` ```
GiteaToGithubMigrator/ GitMigrator/
├── migrate.py # Script principal ├── main.py # Script principal
├── config.py # Gestion de la configuration ├── core/ # Logique métier centrale
├── gitea_client.py # Client API Gitea │ ├── config.py # Gestion de la configuration multi-providers
├── github_client.py # Client API GitHub │ └── migration_engine.py # Moteur de migration
├── migration_tool.py # Logique de migration ├── providers/ # Providers pour différents services Git
├── requirements.txt # Dépendances Python │ ├── base.py # Classes abstraites et modèles
├── .env # Configuration (à créer) │ ├── factory.py # Factory pour créer les providers
└── README.md # Documentation │ ├── source/ # Providers source
│ │ ├── gitea.py # Support Gitea
│ │ └── gitlab.py # Support GitLab
│ └── destination/ # Providers destination
│ ├── github.py # Support GitHub
│ └── gitlab.py # Support GitLab
├── ui/ # Interface utilisateur
│ └── interactive_selector.py
├── requirements.txt # Dépendances Python
├── .env # Configuration (à créer)
└── README.md # Documentation
``` ```
## 🌟 Providers supportés
### Providers Source
- **Gitea** : Instances Gitea (self-hosted ou cloud)
- **GitLab** : GitLab.com ou instances GitLab self-hosted
### Providers Destination
- **GitHub** : GitHub.com
- **GitLab** : GitLab.com ou instances GitLab self-hosted
### Combinaisons possibles
- Gitea → GitHub
- Gitea → GitLab
- GitLab → GitHub
- GitLab → GitLab (migration entre instances)
## ⚠️ Prérequis ## ⚠️ Prérequis
- Python 3.7+ - Python 3.7+
- Git installé sur votre système - Git installé sur votre système
- Accès aux APIs Gitea et GitHub - Accès aux APIs des providers source et destination
- Tokens d'authentification valides - Tokens d'authentification valides pour les providers
## 🛡 Sécurité ## 🛡 Sécurité
@ -221,21 +304,38 @@ GiteaToGithubMigrator/
### Erreur d'authentification ### Erreur d'authentification
- Vérifiez que vos tokens sont valides et ont les bonnes permissions - Vérifiez que vos tokens sont valides et ont les bonnes permissions
- Assurez-vous que les noms d'utilisateur correspondent - Assurez-vous que les noms d'utilisateur correspondent
- Vérifiez que les URLs des providers sont correctes
### Erreur de clonage ### Erreur de clonage
- Vérifiez votre connexion internet - Vérifiez votre connexion internet
- Assurez-vous que Git est installé et accessible - Assurez-vous que Git est installé et accessible
### Repository déjà existant ### Repository déjà existant
- L'outil vérifie automatiquement l'existence sur GitHub - L'outil vérifie automatiquement l'existence sur le provider de destination
- Les repositories existants sont ignorés avec un avertissement - Les repositories existants sont ignorés avec un avertissement
### Provider non supporté
- Vérifiez que le provider est bien configuré dans SOURCE_PROVIDER ou DESTINATION_PROVIDER
- Providers disponibles : gitea, gitlab (source) | github, gitlab (destination)
## 📝 Logs ## 📝 Logs
Tous les détails d'exécution sont sauvegardés dans `migration.log` : Tous les détails d'exécution sont sauvegardés dans `migration.log` :
- Timestamps des opérations - Timestamps des opérations
- Détails des erreurs - Détails des erreurs
- Statistiques de migration - Statistiques de migration
- Informations sur les providers utilisés
## 🚀 Extensibilité
L'architecture modulaire permet d'ajouter facilement de nouveaux providers :
1. **Créer un nouveau provider source** dans `providers/source/`
2. **Créer un nouveau provider destination** dans `providers/destination/`
3. **Enregistrer le provider** dans `providers/factory.py`
4. **Ajouter la configuration** dans `core/config.py`
Voir `ARCHITECTURE.md` pour plus de détails sur l'ajout de nouveaux providers.
## 🤝 Contribution ## 🤝 Contribution
@ -243,6 +343,7 @@ Les contributions sont les bienvenues ! N'hésitez pas à :
- Signaler des bugs - Signaler des bugs
- Proposer des améliorations - Proposer des améliorations
- Soumettre des pull requests - Soumettre des pull requests
- Ajouter de nouveaux providers
## 📄 Licence ## 📄 Licence

Loading…
Cancel
Save