Files
Serveur-NationGlory/GIT_SYNC.md
innotex 773bc7de1f feat: Synchronisation Git automatique des sous-repositories
Amélioration du script check-config.sh pour gérer automatiquement
le clonage et la mise à jour des repositories NationsGlory_ServeurBuild_Red
et WebNationsGlory_ServeurBuild_Red.

Nouveautés:
- Clone automatique si repositories absents
- Pull automatique si mises à jour disponibles
- Détection de conflits et modifications locales
- Configuration via repos.conf (template fourni)
- Documentation dans GIT_SYNC.md

Permet un déploiement simplifié sur nouvelle machine et
des mises à jour automatisées en production.
2026-02-05 18:47:13 +01:00

226 lines
5.2 KiB
Markdown

# 🔄 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 <URL_DU_REPO>
```
### 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.