====== 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 ==="