fix(devops): cleanup-merged-worktrees.sh — 3 бага, найденные вживую на 69 забытых worktree #2418

Merged
bot-backend merged 1 commit from fix/cleanup-worktrees-script-bugs into main 2026-07-04 13:00:14 +00:00

1 commit

Author SHA1 Message Date
b03a12204a fix(devops): cleanup-merged-worktrees.sh — 3 bugs found live-diagnosing 60+ stale worktrees
All checks were successful
CI / changes (pull_request) Successful in 8s
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / backend-tests (pull_request) Has been skipped
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
1. remote-alias хардкод 'forgejo' — этот чекаут использует 'origin', скрипт
   падал на первой же команде. Автодетект вместо хардкода.
2. merge-check через 'git merge-base --is-ancestor branch main' структурно
   несовместим со squash-merge конвенцией репо (git-pr.md): squash создаёт
   НОВЫЙ коммит в main, оригинальный коммит ветки никогда не становится
   предком — ancestor-check ложно-отрицателен на КАЖДОЙ смерженной ветке.
   Заменено на надёжный прокси: ветка отсутствует на remote (конвенция репо
   — всегда delete_branch:true при мерже).
3. 'git worktree remove --force' (одинарный) недостаточен для worktree,
   залоченного супервизором Claude Code — нужен двойной '-f -f' (force
   применяется дважды: снятие lock + подтверждение удаления).

Плюс dirty-gate: worktree с незакоммиченными TRACKED-изменениями (не просто
untracked-мусором вроде node_modules) теперь пропускается с явным SKIP —
не удаляется вслепую, если там могла остаться нерасхваченная работа.

Найдено вживую при диагностике: 69 worktree накопилось, 21 безопасны
(branch снят с remote + чистое дерево), 30 dirty (требуют разбора вручную),
13 всё ещё в работе (branch жив на remote). Само удаление НЕ проведено этим
коммитом — попытка force-remove из текущей сессии не сработала (см. комментарий
в скрипте про harness-managed worktree).
2026-07-04 17:58:38 +05:00