From 22559179490c65fd00698d72b6c13f7ae556fb08 Mon Sep 17 00:00:00 2001 From: Hermes Date: Mon, 17 Aug 2026 00:05:00 +0500 Subject: [PATCH] =?UTF-8?q?fix:=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B7=D0=B0?= =?UTF-8?q?=D0=BF=D1=83=D1=81=D0=BA=20=D0=B7=D0=B0=D0=B4=D0=B0=D1=87=D0=B8?= =?UTF-8?q?=20=D0=BD=D0=B0=D1=87=D0=B8=D0=BD=D0=B0=D0=B5=D1=82=D1=81=D1=8F?= =?UTF-8?q?=20=D1=81=20=D1=87=D0=B8=D1=81=D1=82=D0=BE=D0=B3=D0=BE=20worktr?= =?UTF-8?q?ee=20(reset+clean=20=D0=BF=D0=B5=D1=80=D0=B5=D0=B4=20checkout?= =?UTF-8?q?=20-B)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- internal/worker/gitops.go | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/internal/worker/gitops.go b/internal/worker/gitops.go index 9759f71..6a0ceb5 100644 --- a/internal/worker/gitops.go +++ b/internal/worker/gitops.go @@ -10,12 +10,22 @@ import ( // baseBranch — ветка, от которой отходит feature-работа dev (свежайший main). const baseBranch = "main" -// ensureBranch создаёт/переключает feature-ветку для задачи в repoDir, -// беря за базу свежайший origin/. Возвращает ошибку при сбое. +// ensureBranch пересоздаёт feature-ветку для задачи в repoDir с нуля, +// беря за базу свежайший origin/. Сначала сбрасывает worktree +// к чистому состоянию (reset --hard + clean -fd) — затирая наработки прошлых +// прогонов, иначе checkout -B упирается в «local changes would be overwritten». func (w *Worker) ensureBranch(ctx context.Context, repoDir, branch string) error { if _, err := w.git(ctx, repoDir, "fetch", "origin"); err != nil { return err } + // возвращаем worktree к чистому состоянию текущей ветки, затем чистим untracked + if _, err := w.git(ctx, repoDir, "reset", "--hard"); err != nil { + return err + } + if _, err := w.git(ctx, repoDir, "clean", "-fd"); err != nil { + return err + } + // пересоздаём ветку от свежайшего origin/ if _, err := w.git(ctx, repoDir, "checkout", "-B", branch, "origin/"+baseBranch); err != nil { return err }