Initial push mit Projektdateien
This commit is contained in:
Executable
+123
@@ -0,0 +1,123 @@
|
||||
#!/bin/bash
|
||||
|
||||
# --- KONFIGURATION ---
|
||||
FORGEJO_DOMAIN="hjkgitunix.dedyn.io"
|
||||
FORGEJO_SSH_PORT="222"
|
||||
FORGEJO_USER="hans-jurgen"
|
||||
# ---------------------
|
||||
|
||||
# Titel für KeePassXC setzen (Linux Mint kompatibel)
|
||||
echo -ne "\033]0;Forgejo-Token-Prompt\007"
|
||||
|
||||
# 1. PRÜFUNG / ERSTELLUNG .gitignore
|
||||
if [ ! -f .gitignore ]; then
|
||||
echo "📄 Keine .gitignore gefunden. Erstelle Standard-Vorlage..."
|
||||
|
||||
cat <<EOF > .gitignore
|
||||
# --- SICHERHEIT & GEHEIMNISSE ---
|
||||
.env
|
||||
.env.*
|
||||
*.pem
|
||||
*.key
|
||||
secrets.*
|
||||
config/secrets.*
|
||||
forgejo-push
|
||||
|
||||
# --- PYTHON ---
|
||||
__pycache__/
|
||||
*.py[cod]
|
||||
venv/
|
||||
.venv/
|
||||
|
||||
# --- DOCKER ---
|
||||
*.log
|
||||
docker-compose.override.yml
|
||||
data/
|
||||
db_data/
|
||||
|
||||
# --- ANDROID ---
|
||||
.gradle/
|
||||
build/
|
||||
local.properties
|
||||
*.apk
|
||||
*.keystore
|
||||
|
||||
# --- IDEs & OS ---
|
||||
.idea/
|
||||
.vscode/
|
||||
.DS_Store
|
||||
EOF
|
||||
|
||||
echo "✅ .gitignore wurde erstellt."
|
||||
echo "⚠️ STOPP: Bitte prüfe die .gitignore auf weitere sensible Daten."
|
||||
read -p "Möchtest du mit dem Push fortfahren? (y/n): " confirm
|
||||
if [[ $confirm != "y" ]]; then
|
||||
echo "❌ Abbruch durch Nutzer. Bitte .gitignore bearbeiten und Skript neu starten."
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
|
||||
# 2. TOKEN-ABFRAGE (KeePassXC Auto-Type bereit)
|
||||
#if [ -z "$FORGEJO_TOKEN" ]; then
|
||||
# echo "🔑 Warte auf API-Token (KeePassXC: Strg+Alt+A)..."
|
||||
# # -p sorgt dafür, dass der Prompt stehen bleibt, bis Auto-Type feuert
|
||||
# read -sp "Token eingeben: " FORGEJO_TOKEN
|
||||
FORGEJO_TOKEN=4f86922f29941c5bdaebe4514c0f020f038f1313
|
||||
echo -e "\n✅ Token empfangen."
|
||||
#fi
|
||||
|
||||
# 3. REPO-NAME UND API-LOGIK
|
||||
REPO_NAME=${PWD##*/}
|
||||
echo "🚀 Vorbereitung für Repository: $REPO_NAME"
|
||||
|
||||
# Repo über API erstellen (Vermeidet 'Push to create' Fehler)
|
||||
RESPONSE=$(curl -s -w "%{http_code}" \
|
||||
-H "Authorization: token $FORGEJO_TOKEN" \
|
||||
-H "Content-Type: application/json" \
|
||||
-d "{\"name\":\"$REPO_NAME\", \"private\":false}" \
|
||||
"https://$FORGEJO_DOMAIN/api/v1/user/repos")
|
||||
|
||||
# Extrahiere den HTTP-Statuscode (die letzten 3 Zeichen)
|
||||
HTTP_CODE=$(echo "$RESPONSE" | grep -oE '[0-9]{3}$')
|
||||
|
||||
if [ "$HTTP_CODE" -eq 201 ]; then
|
||||
echo "✅ Repository erfolgreich auf Forgejo erstellt."
|
||||
elif [ "$HTTP_CODE" -eq 409 ]; then
|
||||
echo "ℹ️ Repository existiert bereits auf Forgejo (Status 409)."
|
||||
else
|
||||
echo "❌ Fehler beim API-Aufruf. Status-Code: $HTTP_CODE"
|
||||
echo "Antwort vom Server: $(echo "$RESPONSE" | sed 's/[0-9]\{3\}$//')"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# 4. GIT INITIALISIERUNG & PUSH
|
||||
if [ ! -d .git ]; then
|
||||
echo "Initializing new Git repository..."
|
||||
git init
|
||||
git checkout -b main
|
||||
fi
|
||||
|
||||
# Remote immer frisch setzen
|
||||
git remote remove origin 2>/dev/null
|
||||
git remote add origin "ssh://git@${FORGEJO_DOMAIN%*/}:${FORGEJO_SSH_PORT}/${FORGEJO_USER}/${REPO_NAME}.git"
|
||||
|
||||
# Änderungen hinzufügen
|
||||
git add .
|
||||
|
||||
# Prüfen, ob Dateien zum Committen bereitstehen (Staging Area)
|
||||
if ! git diff --cached --quiet; then
|
||||
echo "📦 Committing changes..."
|
||||
git commit -m "Initial push mit Projektdateien"
|
||||
else
|
||||
echo "ℹ️ Nichts zu committen (alles bereits aktuell)."
|
||||
fi
|
||||
|
||||
# Push zum Server
|
||||
echo "📤 Pushe Daten zu Gitea..."
|
||||
if git push -u origin main; then
|
||||
echo "-----------------------------------------------------------"
|
||||
echo "🎉 Erfolg! Projekt online: https://$FORGEJO_DOMAIN$FORGEJO_USER/$REPO_NAME"
|
||||
echo "-----------------------------------------------------------"
|
||||
else
|
||||
echo "❌ Push fehlgeschlagen."
|
||||
fi
|
||||
Reference in New Issue
Block a user