diff options
| author | soryu <soryu@soryu.co> | 2026-01-29 02:30:16 +0000 |
|---|---|---|
| committer | soryu <soryu@soryu.co> | 2026-01-29 02:30:16 +0000 |
| commit | 7af8561677cfdcfd23d099a25783c7fef51d1ba6 (patch) | |
| tree | a15cddfa7e5492c3d883419e60a1dad3c9d2d0f3 /makima/src/daemon/task | |
| parent | cfe3ea0aae878ae8f591acdc33a48332ac875b9e (diff) | |
| download | soryu-7af8561677cfdcfd23d099a25783c7fef51d1ba6.tar.gz soryu-7af8561677cfdcfd23d099a25783c7fef51d1ba6.zip | |
Fix worktree cleanup to not run for shared worktrees
Diffstat (limited to 'makima/src/daemon/task')
| -rw-r--r-- | makima/src/daemon/task/manager.rs | 23 |
1 files changed, 19 insertions, 4 deletions
diff --git a/makima/src/daemon/task/manager.rs b/makima/src/daemon/task/manager.rs index 8c5f8d7..1e05978 100644 --- a/makima/src/daemon/task/manager.rs +++ b/makima/src/daemon/task/manager.rs @@ -3305,12 +3305,27 @@ impl TaskManager { task_id: Uuid, ) -> Result<(), DaemonError> { // Get task's worktree path and branch + // If the task shares a supervisor's worktree, use the supervisor's worktree info let task_info = { let tasks = self.tasks.read().await; - tasks.get(&task_id).map(|t| ( - t.worktree.as_ref().map(|w| w.path.clone()), - t.worktree.as_ref().map(|w| w.branch.clone()), - )) + if let Some(task) = tasks.get(&task_id) { + // Check if this task shares a supervisor's worktree + if let Some(supervisor_task_id) = task.supervisor_worktree_task_id { + // Use the supervisor's worktree + tasks.get(&supervisor_task_id).map(|supervisor| ( + supervisor.worktree.as_ref().map(|w| w.path.clone()), + supervisor.worktree.as_ref().map(|w| w.branch.clone()), + )) + } else { + // Use the task's own worktree + Some(( + task.worktree.as_ref().map(|w| w.path.clone()), + task.worktree.as_ref().map(|w| w.branch.clone()), + )) + } + } else { + None + } }; let (worktree_path, branch) = match task_info { |
