#!/bin/bash GITEA_URL="https://gitea.kasimirat.de" GITEA_USER="thomas" GITEA_TOKEN="289ac11a4ad2938fa34e6baa29bec74bdbcbb57b" read -p "Pfad zum lokalen Verzeichnis (z für Abbruch): " DIR [[ "$DIR" =~ ^[zZ]$ ]] && exit 0 if [ ! -d "$DIR" ]; then echo "Verzeichnis nicht gefunden!" exit 1 fi cd "$DIR" read -p "Repo-Name auf Gitea (z für Abbruch): " REPO [[ "$REPO" =~ ^[zZ]$ ]] && exit 0 REPO_VALID=$(echo "$REPO" | sed 's/ /-/g') if [[ ! "$REPO_VALID" =~ ^[A-Za-z0-9._-]+$ ]]; then echo "Ungültiger Repo-Name! Nur Buchstaben, Zahlen, Bindestrich (-), Unterstrich (_) und Punkt (.) sind erlaubt." exit 1 fi # Prüfe, ob das Repo schon existiert EXISTS=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_URL/api/v1/repos/$GITEA_USER/$REPO_VALID" | grep '"id"') if [ -z "$EXISTS" ]; then # Repo per API anlegen ANTWORT=$(curl -s -X POST -H "Content-Type: application/json" -H "Authorization: token $GITEA_TOKEN" \ -d '{"name":"'$REPO_VALID'","private":false}' "$GITEA_URL/api/v1/user/repos") if echo "$ANTWORT" | grep -q '"id"'; then echo "Gitea-Repo $REPO_VALID wurde angelegt." else echo "Fehler beim Anlegen des Repos: $ANTWORT" exit 1 fi NEWREPO=1 else echo "Repo $REPO_VALID existiert bereits, es wird ein Commit & Push durchgeführt." NEWREPO=0 fi # Git-Repo initialisieren (falls noch nicht vorhanden) if [ ! -d .git ]; then git init -b main fi git remote remove origin 2>/dev/null GITURL="https://$GITEA_USER:$GITEA_TOKEN@gitea.kasimirat.de/$GITEA_USER/$REPO_VALID.git" git remote add origin "$GITURL" echo "Welche Dateien sollen zum Commit hinzugefügt werden?" echo "1) Alle Dateien und Unterordner (empfohlen, git add .)" echo "2) Nur Dateien im Hauptverzeichnis (git add *.*)" read -p "Auswahl (1/2, z für Abbruch): " auswahl if [[ "$auswahl" =~ ^[zZ]$ ]]; then exit 0; fi if [[ "$auswahl" == "2" ]]; then echo "Füge nur Dateien im Hauptverzeichnis zum Commit hinzu (git add *.*)..." git add *.* else echo "Füge alle Dateien und Unterordner zum Commit hinzu (git add .)..." git add . fi git status read -p "Commit-Message: " MSG [[ "$MSG" =~ ^[zZ]$ ]] && exit 0 echo "Erstelle Commit..." git commit -m "$MSG" # Prüfe, ob Dateien im Commit enthalten sind COMMITS=$(git log --stat -1) if echo "$COMMITS" | grep -q 'files changed'; then echo "Commit enthält Dateien." else echo "Warnung: Commit enthält keine Dateien! Prüfe, ob .gitignore alles ausschließt oder das Verzeichnis leer ist." fi git branch -M main 2>/dev/null echo "Pushe auf Gitea..." git push -u origin main # Setze Standard-Branch auf main per Gitea-API (nur bei Neuanlage) if [ "$NEWREPO" = "1" ]; then curl -s -X PATCH -H "Content-Type: application/json" -H "Authorization: token $GITEA_TOKEN" \ -d '{"default_branch":"main"}' "$GITEA_URL/api/v1/repos/$GITEA_USER/$REPO_VALID" > /dev/null echo "Upload abgeschlossen. Repo: $GITURL (neu angelegt, Standard-Branch: main)" else echo "Upload abgeschlossen. Repo: $GITURL (bestehendes Repo aktualisiert)" fi # Prüfe, ob der Branch 'main' auf Gitea existiert und Dateien enthält BRANCHINFO=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_URL/api/v1/repos/$GITEA_USER/$REPO_VALID/branches/main") if echo "$BRANCHINFO" | grep -q '"name":"main"'; then TREEURL=$(echo "$BRANCHINFO" | grep -o '"url":"[^"]*"' | head -1 | cut -d'"' -f4) if [ -n "$TREEURL" ]; then TREE=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$TREEURL") if echo "$TREE" | grep -q '"type":"blob"'; then echo "Branch 'main' auf Gitea enthält Dateien." else echo "Warnung: Branch 'main' auf Gitea ist leer! Prüfe, ob Dateien gepusht wurden." fi fi else echo "Warnung: Der Branch 'main' existiert auf Gitea nicht! Prüfe, ob du auf den richtigen Branch gepusht hast." fi # Anleitung für das manuelle Umstellen des Standard-Branches in Gitea: : <<'GITEA_BRANCH_HELP' So stellst du den Standard-Branch in Gitea auf 'main' um: 1. Öffne das Repository im Gitea-Webinterface. 2. Klicke oben rechts auf 'Settings'. 3. Scrolle nach unten und suche das Feld 'Default Branch'. 4. Wähle im Dropdown 'main' aus. 5. Klicke auf 'Save' oder 'Speichern'. Jetzt ist 'main' der Standard-Branch und wird beim Öffnen des Repos angezeigt. GITEA_BRANCH_HELP