sync_state.py: Push Retry bei Ref-Konflikt

This commit is contained in:
Auto-Sync 2026-03-08 09:32:40 +01:00
parent 487ad075a0
commit 1b6519a3d7

View file

@ -404,18 +404,29 @@ def git_commit_and_push(cfg: config.HomelabConfig, forgejo_url: str):
capture_output=True, timeout=15, capture_output=True, timeout=15,
) )
r = subprocess.run( for _push_attempt in range(3):
["git", "-C", str(REPO), "push", forgejo_url, "main", "--quiet"], r = subprocess.run(
capture_output=True, text=True, timeout=30, ["git", "-C", str(REPO), "push", forgejo_url, "main", "--quiet"],
) capture_output=True, text=True, timeout=30,
if r.returncode == 0: )
log("Push erfolgreich") if r.returncode == 0:
(DEBOUNCE_DIR / "git_push.lock").unlink(missing_ok=True) log("Push erfolgreich")
else: (DEBOUNCE_DIR / "git_push.lock").unlink(missing_ok=True)
err = r.stderr.split("\n")[0] if r.stderr else "unbekannt" return
log(f"Push FEHLER: {err}") log(f"Push Retry {_push_attempt + 1}/3 — re-sync...")
tg_alert(cfg, "git_push", subprocess.run(
f"*Homelab Git-Sync fehlgeschlagen*%0A%0AFehler: {err}%0AZeit: {DATE}") ["git", "-C", str(REPO), "fetch", forgejo_url, "main", "--quiet"],
capture_output=True, timeout=30,
)
subprocess.run(
["git", "-C", str(REPO), "rebase", "FETCH_HEAD"],
capture_output=True, timeout=15,
)
err = r.stderr.split("\n")[0] if r.stderr else "unbekannt"
log(f"Push FEHLER nach 3 Versuchen: {err}")
tg_alert(cfg, "git_push",
f"*Homelab Git-Sync fehlgeschlagen*%0A%0AFehler: {err}%0AZeit: {DATE}")
# ── Main ────────────────────────────────────────────── # ── Main ──────────────────────────────────────────────