43 lines
1.4 KiB
Bash
43 lines
1.4 KiB
Bash
#!/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 |