diff --git a/scripts/update.sh b/scripts/update.sh index d13ac66..ec100cd 100644 --- a/scripts/update.sh +++ b/scripts/update.sh @@ -68,11 +68,18 @@ artisan_up(){ git_safe(){ # System-Level safe.directory (root schreibt /etc/gitconfig → gilt für alle User) git config --system --add safe.directory "${APP_DIR}" >/dev/null 2>&1 || true - # User-Level als Fallback + # Wenn APP_DIR einem anderen User gehört (z.B. nach User-Wechsel mailwolt→www-data), + # kompletten Baum neu besitzen — nur wenn nötig (einmalig teuer, danach billig) + local dir_owner + dir_owner="$(stat -c '%U' "${APP_DIR}" 2>/dev/null || echo '')" + if [[ -n "${dir_owner}" && "${dir_owner}" != "${APP_USER}" ]]; then + echo "[i] Eigentümer-Korrektur: ${APP_DIR} → ${APP_USER} (war: ${dir_owner})" + chown -R "${APP_USER}":"${APP_GROUP}" "${APP_DIR}" 2>/dev/null || true + else + # Nur .git sicherstellen (schnell) + chown -R "${APP_USER}":"${APP_GROUP}" "${APP_DIR}/.git" 2>/dev/null || true + fi as_app "git config --global --add safe.directory ${APP_DIR} >/dev/null 2>&1 || true" - # .git vollständig + APP_DIR-Eintrag dem APP_USER gehören - chown "${APP_USER}":"${APP_GROUP}" "${APP_DIR}" 2>/dev/null || true - chown -R "${APP_USER}":"${APP_GROUP}" "${APP_DIR}/.git" 2>/dev/null || true } git_dirty_check(){