diff --git a/server-update.sh b/server-update.sh index 171999f..334c292 100755 --- a/server-update.sh +++ b/server-update.sh @@ -35,11 +35,17 @@ cd "$REMOTE" git config --global --add safe.directory "$REMOTE" 2>/dev/null || true # ── 1. Repo aktualisieren ───────────────────────────────────────────────────── -log "git pull --ff-only origin main" -if ! git pull --ff-only origin main; then - die "git pull fehlgeschlagen. Arbeitsbaum sauber? ('git status' prüfen, ggf. 'git stash')." +# Guard gegen "laufendes Skript editiert sich selbst": zuerst nur pullen, dann +# die frisch gezogene Version neu starten (Marker verhindert Doppel-Pull). +if [[ -z "${_SU_REEXEC:-}" ]]; then + log "git pull --ff-only origin main" + if ! git pull --ff-only origin main; then + die "git pull fehlgeschlagen. Arbeitsbaum sauber? ('git status' prüfen, ggf. 'git stash')." + fi + log "Jetzt auf: $(git log --oneline -1)" + export _SU_REEXEC=1 + exec bash "$REMOTE/server-update.sh" "$@" # frische Version übernimmt ab hier fi -log "Jetzt auf: $(git log --oneline -1)" # ── 2. Migration ────────────────────────────────────────────────────────────── if $DO_MIGRATE; then