126 lines
4.6 KiB
Bash
Executable File
126 lines
4.6 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"
|
|
|
|
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
|
|
|
|
# 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 |