sync_state.py: Push Retry bei Ref-Konflikt
This commit is contained in:
parent
487ad075a0
commit
1b6519a3d7
1 changed files with 23 additions and 12 deletions
|
|
@ -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 ──────────────────────────────────────────────
|
||||
|
|
|
|||
Loading…
Add table
Reference in a new issue