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.
This commit is contained in:
225
GIT_SYNC.md
Normal file
225
GIT_SYNC.md
Normal file
@@ -0,0 +1,225 @@
|
||||
# 🔄 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.
|
||||
Reference in New Issue
Block a user