From 83621d689e7decaade9bf908aead2aced2e888a5 Mon Sep 17 00:00:00 2001 From: nrslib <38722970+nrslib@users.noreply.github.com> Date: Thu, 29 Jan 2026 09:43:04 +0900 Subject: [PATCH] =?UTF-8?q?worktree:=20try-catch=20=E3=83=95=E3=82=A9?= =?UTF-8?q?=E3=83=BC=E3=83=AB=E3=83=90=E3=83=83=E3=82=AF=E3=81=A8=E5=86=97?= =?UTF-8?q?=E9=95=B7=E3=82=B3=E3=83=A1=E3=83=B3=E3=83=88=E3=82=92=E5=89=8A?= =?UTF-8?q?=E9=99=A4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/task/worktree.ts | 28 ++++++++-------------------- 1 file changed, 8 insertions(+), 20 deletions(-) diff --git a/src/task/worktree.ts b/src/task/worktree.ts index d460a2e..0f273ec 100644 --- a/src/task/worktree.ts +++ b/src/task/worktree.ts @@ -42,39 +42,27 @@ function generateTimestamp(): string { * Priority: * 1. Custom path in options.worktree (string) * 2. worktree_dir from config.yaml (if set) - * 3. Default: ../{tree-name} (outside project to avoid Claude Code project detection issues) + * 3. Default: ../{tree-name} */ function resolveWorktreePath(projectDir: string, options: WorktreeOptions): string { const timestamp = generateTimestamp(); const slug = slugify(options.taskSlug); const dirName = slug ? `${timestamp}-${slug}` : timestamp; - // Custom path specified in task options if (typeof options.worktree === 'string') { - const resolved = path.isAbsolute(options.worktree) + return path.isAbsolute(options.worktree) ? options.worktree : path.resolve(projectDir, options.worktree); - return resolved; } - // Load config to check for worktree_dir setting - let worktreeBaseDir: string | undefined; - try { - const globalConfig = loadGlobalConfig(); - worktreeBaseDir = globalConfig.worktreeDir; - } catch { - // Config not found, use default + const globalConfig = loadGlobalConfig(); + if (globalConfig.worktreeDir) { + const baseDir = path.isAbsolute(globalConfig.worktreeDir) + ? globalConfig.worktreeDir + : path.resolve(projectDir, globalConfig.worktreeDir); + return path.join(baseDir, dirName); } - if (worktreeBaseDir) { - // Use configured worktree directory - const resolved = path.isAbsolute(worktreeBaseDir) - ? worktreeBaseDir - : path.resolve(projectDir, worktreeBaseDir); - return path.join(resolved, dirName); - } - - // Default: ../{tree-name} (sibling to project directory) return path.join(projectDir, '..', dirName); }