All checks were successful
Deploy explore / deploy (push) Successful in 2s
Git als root in /opt/explore setzt safe.directory, damit der Checkout nicht an uid 501 scheitert. Co-authored-by: Cursor <cursoragent@cursor.com>
65 lines
2.2 KiB
Bash
Executable File
65 lines
2.2 KiB
Bash
Executable File
#!/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"
|