From 333344c5f050c23eebe79055a48a5e4f32549759 Mon Sep 17 00:00:00 2001 From: Adib234 <30782825+Adib234@users.noreply.github.com> Date: Mon, 4 May 2026 15:47:39 -0400 Subject: [PATCH] Update packages/core/src/services/worktreeService.ts Co-authored-by: gemini-code-assist[bot] <176961590+gemini-code-assist[bot]@users.noreply.github.com> --- packages/core/src/services/worktreeService.ts | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/packages/core/src/services/worktreeService.ts b/packages/core/src/services/worktreeService.ts index 5873329c58..8fa2fbd4cf 100644 --- a/packages/core/src/services/worktreeService.ts +++ b/packages/core/src/services/worktreeService.ts @@ -121,12 +121,19 @@ export async function createWorktree( ): Promise { const worktreePath = getWorktreePath(projectRoot, name); + const worktreesBaseDir = path.join(projectRoot, '.gemini', 'worktrees'); + const relative = path.relative(worktreesBaseDir, worktreePath); + if (relative.startsWith('..') || path.isAbsolute(relative)) { + throw new Error('Invalid worktree name'); + } + try { - await fs.access(worktreePath); - // Worktree path already exists, reuse it - return worktreePath; - } catch { - // Does not exist, proceed to create + const stats = await fs.promises.stat(worktreePath); + if (stats.isDirectory() && await isGeminiWorktree(worktreePath)) { + return worktreePath; + } + } catch (err) { + if (err.code !== 'ENOENT') throw err; } const branchName = `worktree-${name}`;