summaryrefslogtreecommitdiff
path: root/makima/src/daemon/task
diff options
context:
space:
mode:
authorsoryu <soryu@soryu.co>2026-01-29 02:30:16 +0000
committersoryu <soryu@soryu.co>2026-01-29 02:30:16 +0000
commit7af8561677cfdcfd23d099a25783c7fef51d1ba6 (patch)
treea15cddfa7e5492c3d883419e60a1dad3c9d2d0f3 /makima/src/daemon/task
parentcfe3ea0aae878ae8f591acdc33a48332ac875b9e (diff)
downloadsoryu-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.rs23
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 {