parent
957ebaaff0
commit
277e9dee4b
@ -1,341 +1,341 @@
|
|||||||
# 🚀 Outil de Migration Git Multi-Providers
|
# 🚀 Multi-Provider Git Migration Tool
|
||||||
|
|
||||||
Cet projet fournit un outil pratique et modulable pour migrer automatiquement vos repositories entre différents providers Git.
|
This project provides a practical and modular tool to automatically migrate your repositories between different Git providers.
|
||||||
|
|
||||||
## ✨ Fonctionnalités
|
## ✨ Features
|
||||||
|
|
||||||
- **Migration multi-providers** : Supporte plusieurs providers source et destination
|
- **Multi-provider migration**: Supports multiple source and destination providers
|
||||||
- **Providers supportés** :
|
- **Supported providers**:
|
||||||
- **Sources** : Gitea, GitLab
|
- **Sources**: Gitea, GitLab
|
||||||
- **Destinations** : GitHub, GitLab
|
- **Destinations**: GitHub, GitLab
|
||||||
- **Mode interactif par défaut** : Interface élégante pour sélectionner/déselectionner les repos à migrer
|
- **Interactive mode by default**: Elegant interface to select/deselect repositories to migrate
|
||||||
- **Vision complète** : Voit tous les repositories accessibles (vos repos + ceux d'organisations)
|
- **Complete vision**: See all accessible repositories (your repos + those from organizations)
|
||||||
- **Sélection intelligente** : Vos repositories sont pré-sélectionnés, les autres sont désélectionnés par défaut
|
- **Smart selection**: Your repositories are pre-selected, others are deselected by default
|
||||||
- **Renommage intelligent** : Possibilité de renommer les repositories lors de la migration
|
- **Smart renaming**: Ability to rename repositories during migration
|
||||||
- **Migration sélective** : Choisissez spécifiquement quels repositories migrer en ligne de commande
|
- **Selective migration**: Choose specifically which repositories to migrate via command line
|
||||||
- **Interface en ligne de commande** : Interface colorée et intuitive avec navigation au clavier
|
- **Command line interface**: Colorful and intuitive interface with keyboard navigation
|
||||||
- **Logging complet** : Suivi détaillé des opérations avec fichier de log
|
- **Complete logging**: Detailed operation tracking with log file
|
||||||
- **Gestion des erreurs** : Robuste avec gestion gracieuse des erreurs
|
- **Error handling**: Robust with graceful error management
|
||||||
- **Architecture extensible** : Facilement extensible pour ajouter de nouveaux providers
|
- **Extensible architecture**: Easily extensible to add new providers
|
||||||
|
|
||||||
## 🛠 Installation
|
## 🛠 Installation
|
||||||
|
|
||||||
1. **Clonez le repository** :
|
1. **Clone the repository**:
|
||||||
```bash
|
```bash
|
||||||
git clone https://github.com/votre-username/GitMigrator.git
|
git clone https://github.com/your-username/GitMigrator.git
|
||||||
cd GitMigrator
|
cd GitMigrator
|
||||||
```
|
```
|
||||||
|
|
||||||
2. **Configuration automatique** :
|
2. **Automatic configuration**:
|
||||||
```bash
|
```bash
|
||||||
./run.sh --setup
|
./run.sh --setup
|
||||||
```
|
```
|
||||||
|
|
||||||
Le script va automatiquement :
|
The script will automatically:
|
||||||
- Créer un environnement virtuel Python
|
- Create a Python virtual environment
|
||||||
- Installer toutes les dépendances
|
- Install all dependencies
|
||||||
- Créer le fichier de configuration `.env`
|
- Create the `.env` configuration file
|
||||||
|
|
||||||
Cela créera un fichier `.env` que vous devrez remplir avec vos informations selon les providers choisis.
|
This will create a `.env` file that you will need to fill with your information according to the chosen providers.
|
||||||
|
|
||||||
## 🔧 Configuration
|
## 🔧 Configuration
|
||||||
|
|
||||||
### Configuration avec support multi-instances
|
### Configuration with multi-instance support
|
||||||
```env
|
```env
|
||||||
# Gitea Source Configuration
|
# Gitea Source Configuration
|
||||||
GITEA_SOURCE_URL=https://votre-instance-gitea-source.com
|
GITEA_SOURCE_URL=https://your-gitea-source-instance.com
|
||||||
GITEA_SOURCE_TOKEN=votre_token_gitea_source
|
GITEA_SOURCE_TOKEN=your_gitea_source_token
|
||||||
GITEA_SOURCE_USERNAME=votre_nom_utilisateur_gitea_source
|
GITEA_SOURCE_USERNAME=your_gitea_source_username
|
||||||
|
|
||||||
# Gitea Destination Configuration
|
# Gitea Destination Configuration
|
||||||
GITEA_DEST_URL=https://votre-instance-gitea-dest.com
|
GITEA_DEST_URL=https://your-gitea-dest-instance.com
|
||||||
GITEA_DEST_TOKEN=votre_token_gitea_dest
|
GITEA_DEST_TOKEN=your_gitea_dest_token
|
||||||
GITEA_DEST_USERNAME=votre_nom_utilisateur_gitea_dest
|
GITEA_DEST_USERNAME=your_gitea_dest_username
|
||||||
|
|
||||||
# GitLab Source Configuration
|
# GitLab Source Configuration
|
||||||
GITLAB_SOURCE_URL=https://gitlab-source.com
|
GITLAB_SOURCE_URL=https://gitlab-source.com
|
||||||
GITLAB_SOURCE_TOKEN=votre_token_gitlab_source
|
GITLAB_SOURCE_TOKEN=your_gitlab_source_token
|
||||||
GITLAB_SOURCE_USERNAME=votre_nom_utilisateur_gitlab_source
|
GITLAB_SOURCE_USERNAME=your_gitlab_source_username
|
||||||
|
|
||||||
# GitLab Destination Configuration
|
# GitLab Destination Configuration
|
||||||
GITLAB_DEST_URL=https://gitlab-dest.com
|
GITLAB_DEST_URL=https://gitlab-dest.com
|
||||||
GITLAB_DEST_TOKEN=votre_token_gitlab_dest
|
GITLAB_DEST_TOKEN=your_gitlab_dest_token
|
||||||
GITLAB_DEST_USERNAME=votre_nom_utilisateur_gitlab_dest
|
GITLAB_DEST_USERNAME=your_gitlab_dest_username
|
||||||
|
|
||||||
# GitHub Configuration (same for source and destination - only one instance)
|
# GitHub Configuration (same for source and destination - only one instance)
|
||||||
GITHUB_TOKEN=votre_token_github
|
GITHUB_TOKEN=your_github_token
|
||||||
GITHUB_USERNAME=votre_nom_utilisateur_github
|
GITHUB_USERNAME=your_github_username
|
||||||
```
|
```
|
||||||
|
|
||||||
**📝 Instructions :**
|
**📝 Instructions:**
|
||||||
1. **Multi-instances** : Vous pouvez configurer différentes instances du même provider
|
1. **Multi-instances**: You can configure different instances of the same provider
|
||||||
2. **Même instance** : Utilisez les mêmes credentials pour source et destination si c'est la même instance
|
2. **Same instance**: Use the same credentials for source and destination if it's the same instance
|
||||||
3. **Migration flexible** : Supports GitLab → GitLab, Gitea → Gitea, etc. entre différentes instances
|
3. **Flexible migration**: Supports GitLab → GitLab, Gitea → Gitea, etc. between different instances
|
||||||
4. **Configuration minimale** : Configurez seulement les providers source/destination que vous utilisez
|
4. **Minimal configuration**: Configure only the source/destination providers that you use
|
||||||
5. L'outil vous demandera interactivement quel provider utiliser comme source et destination
|
5. The tool will interactively ask which provider to use as source and destination
|
||||||
|
|
||||||
## 🔑 Configuration des tokens
|
## 🔑 Token Configuration
|
||||||
|
|
||||||
### Token Gitea
|
### Gitea Token
|
||||||
1. Allez dans **Settings** → **Applications** → **Generate New Token**
|
1. Go to **Settings** → **Applications** → **Generate New Token**
|
||||||
2. Donnez un nom au token et sélectionnez les permissions :
|
2. Give the token a name and select permissions:
|
||||||
- `repo` (accès complet aux repositories)
|
- `repo` (full access to repositories)
|
||||||
- `user` (accès aux informations utilisateur)
|
- `user` (access to user information)
|
||||||
|
|
||||||
### Token GitLab
|
### GitLab Token
|
||||||
1. Allez dans **Settings** → **Access Tokens** ou **User Settings** → **Access Tokens**
|
1. Go to **Settings** → **Access Tokens** or **User Settings** → **Access Tokens**
|
||||||
2. Créez un **Personal Access Token** avec les permissions :
|
2. Create a **Personal Access Token** with permissions:
|
||||||
- `read_api` (lecture des informations API)
|
- `read_api` (read API information)
|
||||||
- `read_repository` (lecture des repositories)
|
- `read_repository` (read repositories)
|
||||||
- `write_repository` (écriture des repositories - pour destination)
|
- `write_repository` (write repositories - for destination)
|
||||||
|
|
||||||
### Token GitHub
|
### GitHub Token
|
||||||
1. Allez dans **Settings** → **Developer settings** → **Personal access tokens** → **Tokens (classic)**
|
1. Go to **Settings** → **Developer settings** → **Personal access tokens** → **Tokens (classic)**
|
||||||
2. Cliquez sur **Generate new token (classic)**
|
2. Click on **Generate new token (classic)**
|
||||||
3. Sélectionnez les permissions :
|
3. Select permissions:
|
||||||
- `repo` (accès complet aux repositories privés)
|
- `repo` (full access to private repositories)
|
||||||
- `public_repo` (accès aux repositories publics)
|
- `public_repo` (access to public repositories)
|
||||||
|
|
||||||
## 🚀 Utilisation
|
## 🚀 Usage
|
||||||
|
|
||||||
Après avoir configuré vos tokens dans le fichier `.env`, utilisez le script de lancement :
|
After configuring your tokens in the `.env` file, use the launch script:
|
||||||
|
|
||||||
### Migration interactive (par défaut)
|
### Interactive migration (default)
|
||||||
```bash
|
```bash
|
||||||
./run.sh
|
./run.sh
|
||||||
```
|
```
|
||||||
|
|
||||||
### Migration automatique de tous vos repos
|
### Automatic migration of all your repos
|
||||||
```bash
|
```bash
|
||||||
./run.sh --no-interactive
|
./run.sh --no-interactive
|
||||||
```
|
```
|
||||||
|
|
||||||
### Migration de repositories spécifiques
|
### Migration of specific repositories
|
||||||
```bash
|
```bash
|
||||||
./run.sh --repos mon-repo autre-repo
|
./run.sh --repos my-repo another-repo
|
||||||
```
|
```
|
||||||
|
|
||||||
### Lister les repositories disponibles
|
### List available repositories
|
||||||
```bash
|
```bash
|
||||||
./run.sh --list
|
./run.sh --list
|
||||||
```
|
```
|
||||||
|
|
||||||
### Mode verbose (plus de détails)
|
### Verbose mode (more details)
|
||||||
```bash
|
```bash
|
||||||
./run.sh --verbose
|
./run.sh --verbose
|
||||||
```
|
```
|
||||||
|
|
||||||
> **💡 Alternative** : Vous pouvez aussi utiliser directement `python main.py` si vous avez activé l'environnement virtuel (`source venv/bin/activate`)
|
> **💡 Alternative**: You can also use `python main.py` directly if you have activated the virtual environment (`source venv/bin/activate`)
|
||||||
|
|
||||||
## 🎯 Mode Interactif
|
## 🎯 Interactive Mode
|
||||||
|
|
||||||
Le mode interactif (activé par défaut) offre une **interface utilisateur élégante** pour sélectionner précisément quels repositories migrer :
|
Interactive mode (enabled by default) offers an **elegant user interface** to precisely select which repositories to migrate:
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
./run.sh # Mode interactif par défaut
|
./run.sh # Interactive mode by default
|
||||||
```
|
```
|
||||||
|
|
||||||
### Contrôles dans l'interface interactive :
|
### Controls in the interactive interface:
|
||||||
- **↑↓** : Naviguer entre les repositories
|
- **↑↓**: Navigate between repositories
|
||||||
- **←→** : Changer de page (si beaucoup de repos)
|
- **←→**: Change page (if many repos)
|
||||||
- **ESPACE** : Cocher/décocher un repository
|
- **SPACE**: Check/uncheck a repository
|
||||||
- **A** : Sélectionner tous les repositories
|
- **A**: Select all repositories
|
||||||
- **N** : Désélectionner tous les repositories
|
- **N**: Deselect all repositories
|
||||||
- **ENTRÉE** : Confirmer la sélection et passer au renommage (optionnel)
|
- **ENTER**: Confirm selection and proceed to renaming (optional)
|
||||||
- **Q** : Quitter sans migrer
|
- **Q**: Quit without migrating
|
||||||
|
|
||||||
### Interface de renommage :
|
### Renaming interface:
|
||||||
Après la sélection, l'outil propose de renommer les repositories :
|
After selection, the tool offers to rename repositories:
|
||||||
- **Y** : Ouvrir l'interface de renommage
|
- **Y**: Open renaming interface
|
||||||
- **N/ENTRÉE** : Conserver les noms actuels
|
- **N/ENTER**: Keep current names
|
||||||
- **Validation automatique** des noms de repositories pour le provider de destination
|
- **Automatic validation** of repository names for the destination provider
|
||||||
|
|
||||||
### Fonctionnalités :
|
### Features:
|
||||||
- ✅ **Checkboxes visuelles** avec émojis
|
- ✅ **Visual checkboxes** with emojis
|
||||||
- 👤 **Distinction propriétaire** : Vos repos vs repos d'autres utilisateurs
|
- 👤 **Owner distinction**: Your repos vs other users' repos
|
||||||
- 🎯 **Sélection intelligente** : Vos repos pré-sélectionnés par défaut
|
- 🎯 **Smart selection**: Your repos pre-selected by default
|
||||||
- 📋 **Tri intelligent** : Vos repos en premier, puis les autres, tous par ordre alphabétique
|
- 📋 **Smart sorting**: Your repos first, then others, all alphabetically ordered
|
||||||
- ✏️ **Renommage optionnel** : Possibilité de renommer les repos sur le provider de destination
|
- ✏️ **Optional renaming**: Ability to rename repos on the destination provider
|
||||||
- 📄 **Pagination automatique** (15 repos par page)
|
- 📄 **Automatic pagination** (15 repos per page)
|
||||||
- 🎨 **Interface colorée** avec mise en surbrillance et séparateurs visuels
|
- 🎨 **Colorful interface** with highlighting and visual separators
|
||||||
- 📊 **Compteur en temps réel** des repos sélectionnés
|
- 📊 **Real-time counter** of selected repos
|
||||||
- 🔒 **Indicateurs visuels** (privé/public)
|
- 🔒 **Visual indicators** (private/public)
|
||||||
- 📝 **Descriptions tronquées** pour un affichage propre
|
- 📝 **Truncated descriptions** for clean display
|
||||||
|
|
||||||
## 📋 Exemples d'utilisation
|
## 📋 Usage Examples
|
||||||
|
|
||||||
### Exemple 1 : Migration interactive (défaut)
|
### Example 1: Interactive migration (default)
|
||||||
```bash
|
```bash
|
||||||
# 1. Configurez vos providers dans .env
|
# 1. Configure your providers in .env
|
||||||
# 2. Lancez l'outil
|
# 2. Launch the tool
|
||||||
./run.sh
|
./run.sh
|
||||||
|
|
||||||
# L'outil vous demandera :
|
# The tool will ask you:
|
||||||
# - Quel provider utiliser comme source
|
# - Which provider to use as source
|
||||||
# - Quel provider utiliser comme destination
|
# - Which provider to use as destination
|
||||||
# - Puis vous pourrez sélectionner les repos à migrer
|
# - Then you can select repos to migrate
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemple 2 : Migration automatique
|
### Example 2: Automatic migration
|
||||||
```bash
|
```bash
|
||||||
# Migre tous vos repositories automatiquement
|
# Migrate all your repositories automatically
|
||||||
# (après sélection interactive des providers)
|
# (after interactive provider selection)
|
||||||
./run.sh --no-interactive
|
./run.sh --no-interactive
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemple 3 : Migration sélective
|
### Example 3: Selective migration
|
||||||
```bash
|
```bash
|
||||||
# Migre seulement les repositories spécifiés
|
# Migrate only specified repositories
|
||||||
# (après sélection interactive des providers)
|
# (after interactive provider selection)
|
||||||
./run.sh --repos projet-web api-backend
|
./run.sh --repos web-project api-backend
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemple 4 : Migration depuis une organisation
|
### Example 4: Migration from an organization
|
||||||
```bash
|
```bash
|
||||||
# Migre un repository d'une organisation (fonctionne avec tous les providers)
|
# Migrate a repository from an organization (works with all providers)
|
||||||
./run.sh --repos mon-org/projet-important
|
./run.sh --repos my-org/important-project
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemple 5 : Premier lancement (configuration)
|
### Example 5: First launch (configuration)
|
||||||
```bash
|
```bash
|
||||||
# 1. Setup initial - crée le fichier .env template
|
# 1. Initial setup - creates .env template file
|
||||||
./run.sh --setup
|
./run.sh --setup
|
||||||
|
|
||||||
# 2. Éditez le fichier .env avec vos credentials (au moins 2 providers)
|
# 2. Edit the .env file with your credentials (at least 2 providers)
|
||||||
nano .env
|
nano .env
|
||||||
|
|
||||||
# 3. Lancez l'outil - il vous demandera quels providers utiliser
|
# 3. Launch the tool - it will ask which providers to use
|
||||||
./run.sh
|
./run.sh
|
||||||
|
|
||||||
# 4. Pour lister les repos disponibles (après sélection du provider source)
|
# 4. To list available repos (after source provider selection)
|
||||||
./run.sh --list
|
./run.sh --list
|
||||||
```
|
```
|
||||||
|
|
||||||
### Exemple 6 : Migration avec renommage
|
### Example 6: Migration with renaming
|
||||||
```bash
|
```bash
|
||||||
# 1. Lancer le mode interactif
|
# 1. Launch interactive mode
|
||||||
./run.sh
|
./run.sh
|
||||||
|
|
||||||
# 2. Sélectionner les providers source et destination
|
# 2. Select source and destination providers
|
||||||
# 3. Sélectionner les repos à migrer
|
# 3. Select repos to migrate
|
||||||
# 4. Choisir "Y" pour le renommage
|
# 4. Choose "Y" for renaming
|
||||||
# 5. Renommer les repos un par un
|
# 5. Rename repos one by one
|
||||||
# - Appuyer sur ENTRÉE pour garder le nom original
|
# - Press ENTER to keep original name
|
||||||
# - Taper un nouveau nom pour renommer
|
# - Type new name to rename
|
||||||
# 6. Confirmer et lancer la migration
|
# 6. Confirm and start migration
|
||||||
```
|
```
|
||||||
|
|
||||||
## 📊 Résultats
|
## 📊 Results
|
||||||
|
|
||||||
L'outil affiche un résumé détaillé à la fin :
|
The tool displays a detailed summary at the end:
|
||||||
- ✅ Nombre de migrations réussies
|
- ✅ Number of successful migrations
|
||||||
- ❌ Nombre de migrations échouées
|
- ❌ Number of failed migrations
|
||||||
- 📝 Détail par repository
|
- 📝 Detail per repository
|
||||||
|
|
||||||
Tous les logs sont également sauvegardés dans `migration.log`.
|
All logs are also saved in `migration.log`.
|
||||||
|
|
||||||
## 🔧 Structure du projet
|
## 🔧 Project Structure
|
||||||
|
|
||||||
```
|
```
|
||||||
GitMigrator/
|
GitMigrator/
|
||||||
├── main.py # Script principal
|
├── main.py # Main script
|
||||||
├── core/ # Logique métier centrale
|
├── core/ # Core business logic
|
||||||
│ ├── config.py # Gestion de la configuration multi-providers
|
│ ├── config.py # Multi-provider configuration management
|
||||||
│ └── migration_engine.py # Moteur de migration
|
│ └── migration_engine.py # Migration engine
|
||||||
├── providers/ # Providers pour différents services Git
|
├── providers/ # Providers for different Git services
|
||||||
│ ├── base.py # Classes abstraites et modèles
|
│ ├── base.py # Abstract classes and models
|
||||||
│ ├── factory.py # Factory pour créer les providers
|
│ ├── factory.py # Factory to create providers
|
||||||
│ ├── source/ # Providers source
|
│ ├── source/ # Source providers
|
||||||
│ │ ├── gitea.py # Support Gitea
|
│ │ ├── gitea.py # Gitea support
|
||||||
│ │ └── gitlab.py # Support GitLab
|
│ │ └── gitlab.py # GitLab support
|
||||||
│ └── destination/ # Providers destination
|
│ └── destination/ # Destination providers
|
||||||
│ ├── github.py # Support GitHub
|
│ ├── github.py # GitHub support
|
||||||
│ └── gitlab.py # Support GitLab
|
│ └── gitlab.py # GitLab support
|
||||||
├── ui/ # Interface utilisateur
|
├── ui/ # User interface
|
||||||
│ └── interactive_selector.py
|
│ └── interactive_selector.py
|
||||||
├── requirements.txt # Dépendances Python
|
├── requirements.txt # Python dependencies
|
||||||
├── .env # Configuration (à créer)
|
├── .env # Configuration (to create)
|
||||||
└── README.md # Documentation
|
└── README.md # Documentation
|
||||||
```
|
```
|
||||||
|
|
||||||
## 🌟 Providers supportés
|
## 🌟 Supported Providers
|
||||||
|
|
||||||
### Providers Source
|
### Source Providers
|
||||||
- **Gitea** : Instances Gitea (self-hosted ou cloud)
|
- **Gitea**: Gitea instances (self-hosted or cloud)
|
||||||
- **GitLab** : GitLab.com ou instances GitLab self-hosted
|
- **GitLab**: GitLab.com or self-hosted GitLab instances
|
||||||
|
|
||||||
### Providers Destination
|
### Destination Providers
|
||||||
- **GitHub** : GitHub.com
|
- **GitHub**: GitHub.com
|
||||||
- **GitLab** : GitLab.com ou instances GitLab self-hosted
|
- **GitLab**: GitLab.com or self-hosted GitLab instances
|
||||||
|
|
||||||
### Combinaisons possibles
|
### Possible Combinations
|
||||||
- Gitea → GitHub
|
- Gitea → GitHub
|
||||||
- Gitea → GitLab
|
- Gitea → GitLab
|
||||||
- GitLab → GitHub
|
- GitLab → GitHub
|
||||||
- GitLab → GitLab (migration entre instances)
|
- GitLab → GitLab (migration between instances)
|
||||||
|
|
||||||
## ⚠️ Prérequis
|
## ⚠️ Prerequisites
|
||||||
|
|
||||||
- Python 3.7+
|
- Python 3.7+
|
||||||
- Git installé sur votre système
|
- Git installed on your system
|
||||||
- Accès aux APIs des providers source et destination
|
- Access to source and destination provider APIs
|
||||||
- Tokens d'authentification valides pour les providers
|
- Valid authentication tokens for providers
|
||||||
|
|
||||||
## 🛡 Sécurité
|
## 🛡 Security
|
||||||
|
|
||||||
- Les tokens sont stockés dans un fichier `.env` (ajoutez-le à `.gitignore`)
|
- Tokens are stored in a `.env` file (add it to `.gitignore`)
|
||||||
- Les URLs d'authentification ne sont jamais loggées
|
- Authentication URLs are never logged
|
||||||
- Nettoyage automatique des repositories temporaires
|
- Automatic cleanup of temporary repositories
|
||||||
|
|
||||||
## 🐛 Résolution de problèmes
|
## 🐛 Troubleshooting
|
||||||
|
|
||||||
### Erreur d'authentification
|
### Authentication error
|
||||||
- Vérifiez que vos tokens sont valides et ont les bonnes permissions
|
- Check that your tokens are valid and have the right permissions
|
||||||
- Assurez-vous que les noms d'utilisateur correspondent
|
- Make sure usernames match
|
||||||
- Vérifiez que les URLs des providers sont correctes
|
- Verify that provider URLs are correct
|
||||||
|
|
||||||
### Erreur de clonage
|
### Clone error
|
||||||
- Vérifiez votre connexion internet
|
- Check your internet connection
|
||||||
- Assurez-vous que Git est installé et accessible
|
- Make sure Git is installed and accessible
|
||||||
|
|
||||||
### Repository déjà existant
|
### Repository already exists
|
||||||
- L'outil vérifie automatiquement l'existence sur le provider de destination
|
- The tool automatically checks existence on the destination provider
|
||||||
- Les repositories existants sont ignorés avec un avertissement
|
- Existing repositories are ignored with a warning
|
||||||
|
|
||||||
### Provider non supporté ou non configuré
|
### Unsupported or unconfigured provider
|
||||||
- Vérifiez que vos providers sont bien configurés dans le fichier .env
|
- Check that your providers are properly configured in the .env file
|
||||||
- Assurez-vous d'avoir au moins 2 providers configurés
|
- Make sure you have at least 2 providers configured
|
||||||
- Providers disponibles : gitea, gitlab, github
|
- Available providers: gitea, gitlab, github
|
||||||
- L'outil vous indiquera quels providers sont configurés au démarrage
|
- The tool will indicate which providers are configured at startup
|
||||||
|
|
||||||
## 📝 Logs
|
## 📝 Logs
|
||||||
|
|
||||||
Tous les détails d'exécution sont sauvegardés dans `migration.log` :
|
All execution details are saved in `migration.log`:
|
||||||
- Timestamps des opérations
|
- Operation timestamps
|
||||||
- Sélection des providers source et destination
|
- Source and destination provider selection
|
||||||
- Détails des erreurs
|
- Error details
|
||||||
- Statistiques de migration
|
- Migration statistics
|
||||||
- Informations complètes sur le processus de migration
|
- Complete information about the migration process
|
||||||
|
|
||||||
## 🚀 Extensibilité
|
## 🚀 Extensibility
|
||||||
|
|
||||||
L'architecture modulaire permet d'ajouter facilement de nouveaux providers :
|
The modular architecture allows easy addition of new providers:
|
||||||
|
|
||||||
1. **Créer un nouveau provider source** dans `providers/source/`
|
1. **Create a new source provider** in `providers/source/`
|
||||||
2. **Créer un nouveau provider destination** dans `providers/destination/`
|
2. **Create a new destination provider** in `providers/destination/`
|
||||||
3. **Enregistrer le provider** dans `providers/factory.py`
|
3. **Register the provider** in `providers/factory.py`
|
||||||
4. **Ajouter la configuration** dans `core/config.py`
|
4. **Add configuration** in `core/config.py`
|
||||||
|
|
||||||
Voir `ARCHITECTURE.md` pour plus de détails sur l'ajout de nouveaux providers.
|
See `ARCHITECTURE.md` for more details on adding new providers.
|
||||||
|
|
||||||
## 🤝 Contribution
|
## 🤝 Contribution
|
||||||
|
|
||||||
Les contributions sont les bienvenues ! N'hésitez pas à :
|
Contributions are welcome! Feel free to:
|
||||||
- Signaler des bugs
|
- Report bugs
|
||||||
- Proposer des améliorations
|
- Suggest improvements
|
||||||
- Soumettre des pull requests
|
- Submit pull requests
|
||||||
- Ajouter de nouveaux providers
|
- Add new providers
|
||||||
|
|
||||||
## 📄 Licence
|
## 📄 License
|
||||||
|
|
||||||
Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de détails.
|
This project is under MIT license. See the LICENSE file for more details.
|
Loading…
Reference in new issue