# 🚀 Gitea to GitHub Migration Tool Ce projet fournit un outil pratique et modulable pour migrer vos repositories de Gitea vers GitHub automatiquement. ## ✹ FonctionnalitĂ©s - **Migration automatique** : Migre tous vos repositories Gitea vers GitHub en une seule commande - **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 - **Migration sĂ©lective** : Choisissez spĂ©cifiquement quels repositories migrer en ligne de commande - **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 ## 🛠 Installation 1. **Clonez le repository** : ```bash git clone https://github.com/votre-username/GiteaToGithubMigrator.git cd GiteaToGithubMigrator ``` 2. **Configuration automatique** : ```bash ./run.sh --setup ``` Le script va automatiquement : - CrĂ©er un environnement virtuel Python - 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 : ```env # Gitea Configuration GITEA_URL=https://votre-instance-gitea.com GITEA_TOKEN=votre_token_gitea GITEA_USERNAME=votre_nom_utilisateur_gitea # GitHub Configuration GITHUB_TOKEN=votre_token_github GITHUB_USERNAME=votre_nom_utilisateur_github ``` ## 🔑 Configuration des tokens ### Token Gitea 1. Allez dans **Settings** → **Applications** → **Generate New Token** 2. Donnez un nom au token et sĂ©lectionnez les permissions : - `repo` (accĂšs complet aux repositories) - `user` (accĂšs aux informations utilisateur) ### Token GitHub 1. Allez dans **Settings** → **Developer settings** → **Personal access tokens** → **Tokens (classic)** 2. Cliquez sur **Generate new token (classic)** 3. SĂ©lectionnez les permissions : - `repo` (accĂšs complet aux repositories privĂ©s) - `public_repo` (accĂšs aux repositories publics) ## 🚀 Utilisation AprĂšs avoir configurĂ© vos tokens dans le fichier `.env`, utilisez le script de lancement : ### Migration interactive (par dĂ©faut) ```bash ./run.sh ``` ### Migration automatique de tous vos repos ```bash ./run.sh --no-interactive ``` ### Migration de repositories spĂ©cifiques ```bash ./run.sh --repos mon-repo autre-repo ``` ### Lister les repositories disponibles ```bash ./run.sh --list ``` ### Mode verbose (plus de dĂ©tails) ```bash ./run.sh --verbose ``` > **💡 Alternative** : Vous pouvez aussi utiliser directement `python migrate.py` si vous avez activĂ© l'environnement virtuel (`source venv/bin/activate`) ## 🎯 Mode Interactif Le mode interactif (activĂ© par dĂ©faut) offre une **interface utilisateur Ă©lĂ©gante** pour sĂ©lectionner prĂ©cisĂ©ment quels repositories migrer : ```bash ./run.sh # Mode interactif par dĂ©faut ``` ### ContrĂŽles dans l'interface interactive : - **↑↓** : Naviguer entre les repositories - **←→** : Changer de page (si beaucoup de repos) - **ESPACE** : Cocher/dĂ©cocher un repository - **A** : SĂ©lectionner tous les repositories - **N** : DĂ©sĂ©lectionner tous les repositories - **ENTRÉE** : Confirmer la sĂ©lection et lancer la migration - **Q** : Quitter sans migrer ### 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 - 📄 **Pagination automatique** (15 repos par page) - 🎹 **Interface colorĂ©e** avec mise en surbrillance - 📊 **Compteur en temps rĂ©el** des repos sĂ©lectionnĂ©s - 🔒 **Indicateurs visuels** (privĂ©/public) - 📝 **Descriptions tronquĂ©es** pour un affichage propre ## 📋 Exemples d'utilisation ### Exemple 1 : Migration interactive (dĂ©faut) ```bash # Interface interactive pour sĂ©lectionner les repos ./run.sh ``` ### Exemple 2 : Migration automatique ```bash # Migre tous vos repositories automatiquement ./run.sh --no-interactive ``` ### Exemple 3 : Migration sĂ©lective ```bash # Migre seulement les repositories spĂ©cifiĂ©s ./run.sh --repos projet-web api-backend ``` ### Exemple 4 : Migration depuis une organisation ```bash # Migre un repository d'une organisation ./run.sh --repos mon-org/projet-important ``` ### Exemple 5 : Premier lancement (configuration) ```bash # 1. Setup initial ./run.sh --setup # 2. Éditez le fichier .env avec vos credentials nano .env # 3. Listez vos repositories disponibles ./run.sh --list # 4. Lancez la migration ./run.sh ``` ## 📊 RĂ©sultats L'outil affiche un rĂ©sumĂ© dĂ©taillĂ© Ă  la fin : - ✅ Nombre de migrations rĂ©ussies - ❌ Nombre de migrations Ă©chouĂ©es - 📝 DĂ©tail par repository 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 ``` ## ⚠ PrĂ©requis - Python 3.7+ - Git installĂ© sur votre systĂšme - AccĂšs aux APIs Gitea et GitHub - Tokens d'authentification valides ## 🛡 SĂ©curitĂ© - Les tokens sont stockĂ©s dans un fichier `.env` (ajoutez-le Ă  `.gitignore`) - Les URLs d'authentification ne sont jamais loggĂ©es - Nettoyage automatique des repositories temporaires ## 🐛 RĂ©solution de problĂšmes ### Erreur d'authentification - VĂ©rifiez que vos tokens sont valides et ont les bonnes permissions - Assurez-vous que les noms d'utilisateur correspondent ### 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 - Les repositories existants sont ignorĂ©s avec un avertissement ## 📝 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 ## đŸ€ Contribution Les contributions sont les bienvenues ! N'hĂ©sitez pas Ă  : - Signaler des bugs - Proposer des amĂ©liorations - Soumettre des pull requests ## 📄 Licence Ce projet est sous licence MIT. Voir le fichier LICENSE pour plus de dĂ©tails.