#!/bin/bash # Erstinstallation / Sync von Explor.Code.Law auf dem Strato-VServer. # Kein Docker, kein Apache — nur Git-Checkout unter /opt/explore. # ge_xml/ und .env werden nicht gelöscht. set -euo pipefail echo "explore – Server-Sync" echo "=====================" PROJECT_DIR="/opt/explore" GITEA_URL="https://git.coded.law/michaelkole/explore.git" REMOTE_BRANCH="main" if [ "$(id -u)" -ne 0 ] && [ ! -w "$(dirname "$PROJECT_DIR")" ]; then echo "Hinweis: Skript typischerweise als root auf dem Server ausführen," echo " oder lokal sync_to_server.sh für rsync nutzen." fi mkdir -p "$PROJECT_DIR" cd "$PROJECT_DIR" # rsync vom Mac setzt uid 501 — Git als root braucht safe.directory export GIT_CONFIG_COUNT=1 export GIT_CONFIG_KEY_0=safe.directory export GIT_CONFIG_VALUE_0="$PROJECT_DIR" if [ ! -d .git ]; then if git ls-remote "$GITEA_URL" HEAD &>/dev/null; then echo "Klone $GITEA_URL → $PROJECT_DIR" # Verzeichnis kann schon Dateien haben (Bootstrap-rsync) → init + fetch git init git remote add origin "$GITEA_URL" 2>/dev/null || git remote set-url origin "$GITEA_URL" git fetch origin "$REMOTE_BRANCH" git checkout -B "$REMOTE_BRANCH" "origin/$REMOTE_BRANCH" else echo "Gitea-Repo noch nicht erreichbar: $GITEA_URL" echo "Repo anlegen, pushen, dann dieses Skript erneut ausführen." echo "Bis dahin: lokal ./sync_to_server.sh nutzen." exit 1 fi else echo "Aktualisiere tracked Dateien (ohne git clean)…" git remote set-url origin "$GITEA_URL" 2>/dev/null || true git fetch origin "$REMOTE_BRANCH" # Tracked Dateien aktualisieren. Kein reset --hard, kein git clean: # ge_xml/ und .env bleiben unangetastet. git checkout "origin/$REMOTE_BRANCH" -- . fi mkdir -p ge_md data ge_xml kommentar if [ ! -f .env ] && [ -f env.example ]; then cp env.example .env chmod 600 .env echo ".env aus env.example angelegt" fi chmod 600 .env 2>/dev/null || true echo "" echo "Fertig: $PROJECT_DIR" echo " ge_md: $(find ge_md -name '*.md' 2>/dev/null | wc -l | tr -d ' ') Dateien" echo " ge_xml: $(find ge_xml -type f 2>/dev/null | wc -l | tr -d ' ') Dateien" echo " Index: $([ -f data/normen_index.json ] && echo ja || echo fehlt)" echo "" echo "Optional Index: python3 index_normen.py --lawgit /opt/lawgit"