fix: перезапуск задачи начинается с чистого worktree (reset+clean перед checkout -B)
This commit is contained in:
@@ -10,12 +10,22 @@ import (
|
||||
// baseBranch — ветка, от которой отходит feature-работа dev (свежайший main).
|
||||
const baseBranch = "main"
|
||||
|
||||
// ensureBranch создаёт/переключает feature-ветку для задачи в repoDir,
|
||||
// беря за базу свежайший origin/<baseBranch>. Возвращает ошибку при сбое.
|
||||
// ensureBranch пересоздаёт feature-ветку для задачи в repoDir с нуля,
|
||||
// беря за базу свежайший origin/<baseBranch>. Сначала сбрасывает 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/<baseBranch>
|
||||
if _, err := w.git(ctx, repoDir, "checkout", "-B", branch, "origin/"+baseBranch); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user