Fix git safe.directory for NAS/Synology environments

This commit is contained in:
XPS\Micro 2026-01-30 22:29:25 +01:00
parent f822b93e2e
commit d2a2905369

View File

@ -183,40 +183,56 @@ echo -e " Git: ${GREEN}OK${NC}"
# 3. Pruefe ob bereits installiert (Update vs. Neuinstallation) # 3. Pruefe ob bereits installiert (Update vs. Neuinstallation)
# ============================================================ # ============================================================
echo "" echo ""
# Git safe.directory setzen (fuer NAS/Container-Umgebungen)
git config --global --add safe.directory "${INSTALL_DIR}" 2>/dev/null || true
if [ -d "${INSTALL_DIR}/.git" ]; then if [ -d "${INSTALL_DIR}/.git" ]; then
echo -e "${YELLOW}Update erkannt - hole neueste Aenderungen...${NC}" echo -e "${YELLOW}Update erkannt - hole neueste Aenderungen...${NC}"
# Sichere lokale Aenderungen cd "${INSTALL_DIR}"
if ! git diff --quiet 2>/dev/null; then
# Sichere lokale Aenderungen (ignoriere Fehler)
if git diff --quiet 2>/dev/null; then
: # Keine Aenderungen
else
echo "Lokale Aenderungen gefunden, erstelle Stash..." echo "Lokale Aenderungen gefunden, erstelle Stash..."
git stash git stash 2>/dev/null || true
fi fi
git fetch origin # Update durchfuehren
git pull origin main if git fetch origin 2>/dev/null && git pull origin main 2>/dev/null; then
echo -e "${GREEN}Repository aktualisiert${NC}"
echo -e "${GREEN}Repository aktualisiert${NC}" else
echo -e "${YELLOW}Git-Update fehlgeschlagen, fahre mit lokalen Dateien fort...${NC}"
fi
else else
echo "Neuinstallation - klone Repository..." echo "Neuinstallation - klone Repository..."
# Temporaeres Verzeichnis fuer Clone # Temporaeres Verzeichnis fuer Clone
TEMP_DIR=$(mktemp -d) TEMP_DIR=$(mktemp -d)
git clone "${REPO_URL}" "${TEMP_DIR}"
# Kopiere Dateien (ueberschreibt nicht .env) if git clone "${REPO_URL}" "${TEMP_DIR}"; then
shopt -s dotglob # Kopiere Dateien (ueberschreibt nicht .env)
for item in "${TEMP_DIR}"/*; do shopt -s dotglob 2>/dev/null || true
basename_item=$(basename "$item") for item in "${TEMP_DIR}"/*; do
if [ "$basename_item" != ".env" ] && [ "$basename_item" != ".git" ]; then basename_item=$(basename "$item")
cp -r "$item" "${INSTALL_DIR}/" if [ "$basename_item" != ".env" ] && [ "$basename_item" != ".git" ]; then
fi cp -r "$item" "${INSTALL_DIR}/"
done fi
done
# .git Verzeichnis kopieren fuer Updates # .git Verzeichnis kopieren fuer Updates
cp -r "${TEMP_DIR}/.git" "${INSTALL_DIR}/" cp -r "${TEMP_DIR}/.git" "${INSTALL_DIR}/"
rm -rf "${TEMP_DIR}" rm -rf "${TEMP_DIR}"
echo -e "${GREEN}Repository geklont${NC}" echo -e "${GREEN}Repository geklont${NC}"
else
echo -e "${RED}Fehler: Repository konnte nicht geklont werden!${NC}"
echo "URL: ${REPO_URL}"
rm -rf "${TEMP_DIR}"
exit 1
fi
fi fi
# ============================================================ # ============================================================