====== Datenimport ======
Wenn sehr viele bestehende Daten in eine neue Gitea-Installation importiert werden sollen, dann geht das ganz bequem per Skript. Die Daten (.git) liegen im Importverzeichnis, z. B.: /mnt/dataSSD/gitea/data/import/eugen
Ausserdem wird ein gültiger //Import-Tocken// benötigt. Ein neuer Token wird erstellt unter:\\
//**Settings**// | //**Applications**// | //**Generate New Token**//\\
Name: import
Scopes (anhaken):
repo
admin:repo
write:repo
Den Token, genau so wie er oben angezeigt wird, in das Skript kopieren.\\
**ACHTUNG: Der Token wird nur einmal angezeigt!!!**
Das ausführbare Skript:
#!/bin/bash
# === Konfiguration ===
SRC_BASE="/mnt/dataSSD/gitea/import/eugen"
TMP_BASE="/tmp/gitea-mirror"
HOST="gitea.hoeglinger.name"
OWNER="eugen"
TOKEN="083acf8f9f568ccdd623973ce5c3a6d3a9801d6c"
API_URL="https://$HOST/api/v1/user/repos"
mkdir -p "$TMP_BASE"
echo "=== STARTE LIVE-IMPORT ALLER REPOS (HTTPS) ==="
echo
# Git-Safe-Directory für alle Import-Repos setzen
for repo in "$SRC_BASE"/*.git; do
[ -d "$repo" ] || continue
git config --global --add safe.directory "$repo"
done
for repo in "$SRC_BASE"/*.git; do
[ -d "$repo" ] || continue
name=$(basename "$repo" .git)
echo "=================================================="
echo "===> Importiere Repository: $name"
echo "=================================================="
# 1) Repo in Gitea anlegen (falls noch nicht vorhanden)
echo "--> Erzeuge Repo in Gitea (falls nötig)..."
curl -s -X POST "$API_URL" \
-H "Content-Type: application/json" \
-H "Authorization: token $TOKEN" \
-d "{
\"name\": \"$name\",
\"private\": false
}" \
| jq -r '.message // "ok"' 2>/dev/null
# 2) Mirror-Clone lokal erstellen
workdir="$TMP_BASE/$name.mirror"
echo "--> Erzeuge Mirror-Clone in $workdir..."
rm -rf "$workdir"
if ! git clone --mirror "$repo" "$workdir"; then
echo "!! Fehler beim Clone von $name"
continue
fi
cd "$workdir" || {
echo "!! Konnte nicht nach $workdir wechseln"
continue
}
# 3) Remote zu Gitea setzen (HTTPS + Token)
echo "--> Setze Remote auf Gitea (HTTPS)..."
git remote remove gitea 2>/dev/null || true
git remote add gitea "https://$OWNER:$TOKEN@$HOST/$OWNER/$name.git"
# 4) Mirror-Push
echo "--> Push --mirror nach Gitea..."
if git push --mirror gitea; then
echo "===> OK: $name erfolgreich gespiegelt."
else
echo "!! Fehler beim Push von $name"
fi
echo
done
echo "=== LIVE-IMPORT ABGESCHLOSSEN ==="