scripte/git_gitea_upload.sh

93 lines
3.4 KiB
Bash
Executable File

#!/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="$GITEA_URL/$GITEA_USER/$REPO_VALID.git"
git remote add origin "$GITURL"
git add .
read -p "Commit-Message: " MSG
[[ "$MSG" =~ ^[zZ]$ ]] && exit 0
git commit -m "$MSG"
git branch -M main 2>/dev/null
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
BRANCHES=$(curl -s -H "Authorization: token $GITEA_TOKEN" "$GITEA_URL/api/v1/repos/$GITEA_USER/$REPO_VALID/branches" | grep '"name":"main"')
if [ -z "$BRANCHES" ]; then
echo "Warnung: Der Branch 'main' existiert auf Gitea nicht! Prüfe, ob du auf den richtigen Branch gepusht hast."
echo "Evtl. ist der Standard-Branch noch 'master'."
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. Wähle im Menü links 'Branches'.
4. Wähle im Dropdown 'Default Branch' den Branch 'main' aus.
5. Klicke auf 'Save' oder 'Speichern'.
Jetzt ist 'main' der Standard-Branch und wird beim Öffnen des Repos angezeigt.
GITEA_BRANCH_HELP
# 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