#!/bin/bash LOG="/home/debian/Gestion_sondes/Logs/update_product.log" REPO_PATH="/home/debian/Gestion_sondes" BACKUP_DIR="$REPO_PATH/Archives" DATE=$(date '+%Y-%m-%d %H:%M:%S') echo "[$DATE] 🔄 Lancement du script de mise à jour" >> "$LOG" cd "$REPO_PATH" || { echo "❌ Dossier introuvable : $REPO_PATH" >> "$LOG"; exit 1; } # Création du dossier d'archives s'il n'existe pas mkdir -p "$BACKUP_DIR" # Trouver le dernier numéro de version VERSION=0 for f in "$BACKUP_DIR"/product_backup_*.tar.gz; do if [[ $f =~ product_backup_([0-9]+)\.tar\.gz ]]; then num=${BASH_REMATCH[1]} if (( num > VERSION )); then VERSION=$num fi fi done VERSION=$((VERSION + 1)) VERSION_PADDED=$(printf "%02d" $VERSION) # Sauvegarde du dossier actuel BACKUP_FILE="$BACKUP_DIR/product_backup_$VERSION_PADDED.tar.gz" tar -czf "$BACKUP_FILE" . --exclude=".git" >> "$LOG" 2>&1 echo "[$DATE] 💾 Sauvegarde enregistrée : $BACKUP_FILE" >> "$LOG" # Vérifie s'il y a une fusion en cours if [ -d .git ] && [ -f .git/MERGE_HEAD ]; then echo "[$DATE] ❌ Fusion en cours détectée. Abandon automatique." >> "$LOG" echo "➡️ Lancez 'git merge --abort' manuellement si besoin." >> "$LOG" exit 1 fi # Récupération des dernières modifications distantes git fetch origin >> "$LOG" 2>&1 # Réinitialisation de la branche product sur la version distante git checkout product >> "$LOG" 2>&1 git reset --hard origin/product >> "$LOG" 2>&1 # Fusion directe depuis origin/develop git merge origin/develop -m "🧩 Merge auto develop → product" >> "$LOG" 2>&1 # Push vers le dépôt distant git push origin product >> "$LOG" 2>&1 DATE_END=$(date '+%Y-%m-%d %H:%M:%S') echo "[$DATE_END] ✅ Mise à jour terminée avec succès (v$VERSION_PADDED)" >> "$LOG"