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,
)
r = subprocess.run(
["git", "-C", str(REPO), "push", forgejo_url, "main", "--quiet"],
capture_output=True, text=True, timeout=30,
)
if r.returncode == 0:
log("Push erfolgreich")
(DEBOUNCE_DIR / "git_push.lock").unlink(missing_ok=True)
else:
err = r.stderr.split("\n")[0] if r.stderr else "unbekannt"
log(f"Push FEHLER: {err}")
tg_alert(cfg, "git_push",
f"*Homelab Git-Sync fehlgeschlagen*%0A%0AFehler: {err}%0AZeit: {DATE}")
for _push_attempt in range(3):
r = subprocess.run(
["git", "-C", str(REPO), "push", forgejo_url, "main", "--quiet"],
capture_output=True, text=True, timeout=30,
)
if r.returncode == 0:
log("Push erfolgreich")
(DEBOUNCE_DIR / "git_push.lock").unlink(missing_ok=True)
return
log(f"Push Retry {_push_attempt + 1}/3 — re-sync...")
subprocess.run(
["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 ──────────────────────────────────────────────