Skip to content

Commit 5169827

Browse files
authored
fix(codeagent): fixed the issue where deleting workspaces failed due to worktree not being registered in memory (#128)
1 parent 10c01f9 commit 5169827

File tree

2 files changed

+16
-0
lines changed

2 files changed

+16
-0
lines changed

internal/workspace/manager.go

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -511,6 +511,13 @@ func (m *Manager) MoveIssueToPR(ws *models.Workspace, prNumber int) error {
511511

512512
// 更新工作空间路径
513513
ws.Path = newWorktreePath
514+
515+
// 移动之后,注册worktree到内存中
516+
worktree := &WorktreeInfo{
517+
Worktree: ws.Path,
518+
Branch: ws.Branch,
519+
}
520+
repoManager.RegisterWorktree(prNumber, worktree)
514521
return nil
515522
}
516523

@@ -558,6 +565,9 @@ func (m *Manager) CreateWorkspaceFromPR(pr *github.PullRequest) *models.Workspac
558565
return nil
559566
}
560567

568+
// 注册worktree 到内存中
569+
repoManager.RegisterWorktree(pr.GetNumber(), worktree)
570+
561571
// 创建 session 目录
562572
suffix := strings.TrimPrefix(filepath.Base(worktree.Worktree), fmt.Sprintf("%s-pr-%d-", repo, pr.GetNumber()))
563573
sessionPath, err := m.CreateSessionPath(filepath.Dir(repoManager.GetRepoPath()), repo, pr.GetNumber(), suffix)

internal/workspace/repo_manager.go

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -421,6 +421,12 @@ func (r *RepoManager) CreateWorktreeWithName(worktreeName string, branch string,
421421
return worktree, nil
422422
}
423423

424+
func (r *RepoManager) RegisterWorktree(prNumber int, worktree *WorktreeInfo) {
425+
r.mutex.Lock()
426+
defer r.mutex.Unlock()
427+
r.worktrees[prNumber] = worktree
428+
}
429+
424430
// GetRepoPath 获取仓库路径
425431
func (r *RepoManager) GetRepoPath() string {
426432
return r.repoPath

0 commit comments

Comments
 (0)