Fix: git_safe() korrigiert Eigentümer automatisch bei User-Wechsel

chown -R nur wenn APP_DIR nicht dem APP_USER gehört, sonst nur .git.
Verhindert "Your local changes would be overwritten" nach root-Läufen.

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
main v1.1.312
boban 2026-04-26 19:25:32 +02:00
parent b107e9a580
commit a119686bfa
1 changed files with 11 additions and 4 deletions

View File

@ -68,11 +68,18 @@ artisan_up(){
git_safe(){ git_safe(){
# System-Level safe.directory (root schreibt /etc/gitconfig → gilt für alle User) # 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 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" 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(){ git_dirty_check(){