#!/bin/bash # --- НАСТРОЙКИ --- SERVER="root@192.168.1.87" REMOTE_PATH="/root/magistr/program" # ----------------- echo "📡 Connecting to remote server ($SERVER)..." # 1. Запускаем fetch прямо на сервере # Флаг -o BatchMode=yes запрещает спрашивать пароль (чтобы скрипт не завис) ssh -o BatchMode=yes -o ConnectTimeout=10 "$SERVER" "cd $REMOTE_PATH && git fetch origin" if [ $? -ne 0 ]; then echo "❌ Connection failed." echo "Make sure SSH keys are set up and the server is reachable." exit 1 fi # 2. Проверяем количество новых коммитов (HEAD..@{u}) BEHIND_COUNT=$(ssh "$SERVER" "cd $REMOTE_PATH && git rev-list --count HEAD..@{u} 2>/dev/null") # Если переменная пустая — значит ошибка в гите if [ -z "$BEHIND_COUNT" ]; then echo "⚠️ Git status unknown. Upstream branch might not be set." exit 1 fi # 3. Логика обновления if [ "$BEHIND_COUNT" -gt 0 ]; then echo "⬇️ Found $BEHIND_COUNT new commit(s). Pulling on server..." # Выполняем git pull на сервере ssh "$SERVER" "cd $REMOTE_PATH && git pull" if [ $? -eq 0 ]; then echo "✅ Server successfully updated!" else echo "❌ Update failed (merge conflicts?)." fi else echo "✨ Server is already up to date." fi