📝 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
- **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
- **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
@ -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
- **Logging complet** : Suivi détaillé des opérations avec fichier de log
- **Gestion des erreurs** : Robuste avec gestion gracieuse des erreurs
- **Architecture extensible** : Facilement extensible pour ajouter de nouveaux providers
## 🛠 Installation
1. **Clonez le repository** :
```bash
git clone https://github.com/votre-username/GiteaToGithubMigrator.git
cd GiteaToGithubMigrator
git clone https://github.com/votre-username/GitMigrator.git
cd GitMigrator
```
2. **Configuration automatique** :
@ -32,19 +36,53 @@ Le script va automatiquement :
- Installer toutes les dépendances
- 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
# Gitea Configuration
# Source Provider
SOURCE_PROVIDER=gitea
GITEA_URL=https://votre-instance-gitea.com
GITEA_TOKEN=votre_token_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_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
### Token Gitea
@ -53,6 +91,13 @@ GITHUB_USERNAME=votre_nom_utilisateur_github
- `repo` (accès complet aux repositories)
- `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
1. Allez dans **Settings****Developer settings****Personal access tokens** → **Tokens (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
```
> **💡 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
@ -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 :
- **Y** : Ouvrir l'interface de renommage
- **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 :
- ✅ **Checkboxes visuelles** avec émojis
- 👤 **Distinction propriétaire** : Vos repos vs repos d'autres utilisateurs
- 🎯 **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
- ✏️ **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)
- 🎨 **Interface colorée** avec mise en surbrillance et séparateurs visuels
- 📊 **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
### Exemple 1 : Migration interactive (défaut)
### Exemple 1 : Migration Gitea → GitHub (défaut)
```bash
# Configuration dans .env
SOURCE_PROVIDER=gitea
DESTINATION_PROVIDER=github
# Interface interactive pour sélectionner les repos
./run.sh
```
### Exemple 2 : Migration automatique
### Exemple 2 : Migration GitLab → GitHub
```bash
# Migre tous vos repositories automatiquement
# Configuration dans .env
SOURCE_PROVIDER=gitlab
DESTINATION_PROVIDER=github
# Migration automatique
./run.sh --no-interactive
```
### Exemple 3 : Migration sélective
### Exemple 3 : Migration GitLab → GitLab (entre instances)
```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
```
### Exemple 4 : Migration depuis une organisation
```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
```
@ -157,7 +214,7 @@ Après la sélection, l'outil propose de renommer les repositories :
# 1. Setup initial
./run.sh --setup
# 2. Éditez le fichier .env avec vos credentials
# 2. Éditez le fichier .env avec vos credentials et providers
nano .env
# 3. Listez vos repositories disponibles
@ -192,23 +249,49 @@ Tous les logs sont également sauvegardés dans `migration.log`.
## 🔧 Structure du projet
```
GiteaToGithubMigrator/
├── migrate.py # Script principal
├── config.py # Gestion de la configuration
├── gitea_client.py # Client API Gitea
├── github_client.py # Client API GitHub
├── migration_tool.py # Logique de migration
├── requirements.txt # Dépendances Python
├── .env # Configuration (à créer)
└── README.md # Documentation
GitMigrator/
├── main.py # Script principal
├── core/ # Logique métier centrale
│ ├── config.py # Gestion de la configuration multi-providers
│ └── migration_engine.py # Moteur de migration
├── providers/ # Providers pour différents services Git
│ ├── base.py # Classes abstraites et modèles
│ ├── factory.py # Factory pour créer les providers
│ ├── 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
- Python 3.7+
- Git installé sur votre système
- Accès aux APIs Gitea et GitHub
- Tokens d'authentification valides
- Accès aux APIs des providers source et destination
- Tokens d'authentification valides pour les providers
## 🛡 Sécurité
@ -221,21 +304,38 @@ GiteaToGithubMigrator/
### Erreur d'authentification
- Vérifiez que vos tokens sont valides et ont les bonnes permissions
- Assurez-vous que les noms d'utilisateur correspondent
- Vérifiez que les URLs des providers sont correctes
### Erreur de clonage
- Vérifiez votre connexion internet
- Assurez-vous que Git est installé et accessible
### 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
### 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
Tous les détails d'exécution sont sauvegardés dans `migration.log` :
- Timestamps des opérations
- Détails des erreurs
- 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
@ -243,6 +343,7 @@ Les contributions sont les bienvenues ! N'hésitez pas à :
- Signaler des bugs
- Proposer des améliorations
- Soumettre des pull requests
- Ajouter de nouveaux providers
## 📄 Licence

Loading…
Cancel
Save