# 🔄 Synchronisation Git Automatique Le script `check-config.sh` a Ă©tĂ© amĂ©liorĂ© pour gĂ©rer automatiquement la synchronisation des repositories Git. ## 🎯 FonctionnalitĂ©s ### 1. Clonage automatique Si les dossiers `NationsGlory_ServeurBuild_Red` ou `WebNationsGlory_ServeurBuild_Red` n'existent pas, le script les clone automatiquement depuis les URLs configurĂ©es. ### 2. Mise Ă  jour automatique Si les repositories existent dĂ©jĂ , le script : - ✅ VĂ©rifie si des mises Ă  jour sont disponibles - ✅ Met Ă  jour automatiquement si possible - ⚠ Vous avertit si vous avez des modifications locales ### 3. DĂ©tection de conflits Le script dĂ©tecte : - Modifications locales non commitĂ©es - DiffĂ©rences entre la version locale et distante - ProblĂšmes de connexion Git ## ⚙ Configuration ### Fichier `repos.conf` CrĂ©ez ce fichier pour configurer les URLs de vos repositories : ```bash cp repos.conf.example repos.conf nano repos.conf ``` ### Exemples de configuration **Git sur serveur local (SSH) :** ```bash MC_SERVER_REPO="git@192.168.1.195:/srv/git/NationsGlory_ServeurBuild_Red.git" WEB_ADMIN_REPO="git@192.168.1.195:/srv/git/WebNationsGlory_ServeurBuild_Red.git" DEFAULT_BRANCH="main" ``` **GitHub (SSH) :** ```bash MC_SERVER_REPO="git@github.com:username/NationsGlory_ServeurBuild_Red.git" WEB_ADMIN_REPO="git@github.com:username/WebNationsGlory_ServeurBuild_Red.git" DEFAULT_BRANCH="main" ``` **GitHub (HTTPS) :** ```bash MC_SERVER_REPO="https://github.com/username/NationsGlory_ServeurBuild_Red.git" WEB_ADMIN_REPO="https://github.com/username/WebNationsGlory_ServeurBuild_Red.git" DEFAULT_BRANCH="main" ``` ## 🚀 Utilisation ### Premier dĂ©ploiement ```bash # 1. Configurer les URLs Git cp repos.conf.example repos.conf nano repos.conf # 2. Cloner et vĂ©rifier ./check-config.sh # 3. DĂ©ployer ./deploy.sh ``` ### Mise Ă  jour ```bash # VĂ©rifier et mettre Ă  jour ./check-config.sh # Si des mises Ă  jour sont disponibles ./stop.sh ./deploy.sh ``` ## 📋 Comportement du script ### Cas 1 : Repository n'existe pas ``` [→] Clonage de NationsGlory Serveur MC depuis git@... [✓] NationsGlory Serveur MC clonĂ© avec succĂšs ``` ### Cas 2 : Repository Ă  jour ``` [INFO] Repository NationsGlory Serveur MC existe, vĂ©rification des mises Ă  jour... [✓] NationsGlory Serveur MC est Ă  jour ``` ### Cas 3 : Mise Ă  jour disponible ``` [INFO] Repository NationsGlory Serveur MC existe, vĂ©rification des mises Ă  jour... [→] Mise Ă  jour de NationsGlory Serveur MC disponible... [→] Mise Ă  jour de NationsGlory Serveur MC... [✓] NationsGlory Serveur MC mis Ă  jour avec succĂšs ``` ### Cas 4 : Modifications locales ``` [INFO] Repository NationsGlory Serveur MC existe, vĂ©rification des mises Ă  jour... [→] Mise Ă  jour de NationsGlory Serveur MC disponible... [⚠] NationsGlory Serveur MC a des modifications locales non commitĂ©es [INFO] Pour mettre Ă  jour, committez ou annulez vos modifications ``` ## 🔐 Configuration SSH ### Pour un serveur Git local 1. **GĂ©nĂ©rer une clĂ© SSH** (si vous n'en avez pas) : ```bash ssh-keygen -t ed25519 -C "votre@email.com" ``` 2. **Copier la clĂ© sur le serveur Git** : ```bash ssh-copy-id user@192.168.1.195 ``` 3. **Tester la connexion** : ```bash ssh git@192.168.1.195 ``` ### Pour GitHub/GitLab 1. **Ajouter votre clĂ© SSH** Ă  votre compte GitHub/GitLab 2. **Tester la connexion** : ```bash ssh -T git@github.com # ou ssh -T git@gitlab.com ``` ## 🐛 DĂ©pannage ### Erreur : "Échec du clonage" **Causes possibles :** - URL Git incorrecte dans `repos.conf` - ProblĂšme d'authentification SSH - Serveur Git inaccessible **Solutions :** ```bash # VĂ©rifier l'URL cat repos.conf # Tester la connexion SSH ssh git@192.168.1.195 # Cloner manuellement pour voir l'erreur git clone ``` ### Avertissement : "Modifications locales non commitĂ©es" **Solution 1 : Commiter les modifications** ```bash cd NationsGlory_ServeurBuild_Red git add . git commit -m "Mes modifications" git push ``` **Solution 2 : Annuler les modifications** ```bash cd NationsGlory_ServeurBuild_Red git reset --hard origin/main ``` ### Erreur : "MC_SERVER_REPO non dĂ©fini" **Solution :** ```bash # CrĂ©er repos.conf depuis le template cp repos.conf.example repos.conf nano repos.conf ``` ## 📚 Workflow recommandĂ© ### DĂ©veloppement local 1. Faites vos modifications dans les sous-repositories 2. Testez localement 3. Committez et pushez vos changements 4. Sur le serveur de production, exĂ©cutez `./check-config.sh` pour mettre Ă  jour ### Production 1. ExĂ©cutez rĂ©guliĂšrement `./check-config.sh` pour vĂ©rifier les mises Ă  jour 2. Si des mises Ă  jour sont dĂ©tectĂ©es : ```bash ./stop.sh ./check-config.sh # Met Ă  jour ./deploy.sh # RedĂ©marre ``` ## 🎓 Avantages ✅ **Automatisation** : Plus besoin de cloner/pull manuellement ✅ **DĂ©tection de conflits** : Avertit avant d'Ă©craser des modifications ✅ **Portable** : Fonctionne sur n'importe quelle machine ✅ **Flexible** : Supporte Git local, GitHub, GitLab, etc. ✅ **SĂ©curitĂ©** : VĂ©rifie avant de modifier --- **Note** : Le fichier `repos.conf` n'est pas versionnĂ© (dans `.gitignore`) pour permettre des configurations diffĂ©rentes sur chaque machine.